recyclerview的高级使用

来源:互联网 发布:我的世界js编辑器jside 编辑:程序博客网 时间:2024/06/10 07:36
适配器
HomeAdapter适配器
public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    Context context;    SupperClass supperClass;    LayoutInflater inflater;    private final  int TYPE_1 = 0;    private final  int TYPE_6 = 5;    public HomeAdapter(Context context,  SupperClass supperClass) {        this.context = context;        this.supperClass = supperClass;        inflater = LayoutInflater.from(context);    }    @Override    public int getItemViewType(int position) {        if (position==0){            return TYPE_1;        }else{            return TYPE_6;        }    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        switch (viewType){            case TYPE_1:                View view1 = inflater.inflate(R.layout.item_banner,parent,false);                MyViewHolder1 holder1 = new MyViewHolder1(view1);                return holder1;            case TYPE_6:                View view = inflater.inflate(R.layout.item_home,parent,false);                MyViewHolder6 holder = new MyViewHolder6(view);                return holder;        }        return null;    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        int type = getItemViewType(position);        switch (type){            case TYPE_1:                MyViewHolder1 holder1 = (MyViewHolder1) holder;                holder1.mbanner.setImageLoader(new GlideImageLoader());                List<String> bannerList = new ArrayList<>();                for (int i = 0; i < supperClass.getData().getAd1().size(); i++) {                    bannerList.add(supperClass.getData().getAd1().get(i).getImage());                }                holder1.mbanner.setImages(bannerList);                holder1.mbanner.start();                break;            case TYPE_6:                MyViewHolder6 myViewHolder =(MyViewHolder6) holder;                  myViewHolder.mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,                          StaggeredGridLayoutManager.VERTICAL));                HomeRecyclerAdapter adapter = new HomeRecyclerAdapter(context,supperClass.getData().getDefaultGoodsList() );                myViewHolder.mRecyclerView.setAdapter(adapter);                break;        }         }    @Override    public int getItemCount() {        return 2;    }    class MyViewHolder6 extends RecyclerView.ViewHolder{          RecyclerView mRecyclerView;        public MyViewHolder6(View itemView) {            super(itemView);        mRecyclerView = (RecyclerView)itemView.findViewById(R.id.mRecyclerView);        }    }    class MyViewHolder1 extends RecyclerView.ViewHolder{        private Banner mbanner;        public MyViewHolder1(View itemView) {            super(itemView);            mbanner = (Banner)itemView.findViewById(R.id.banner);        }    }}

HomeRecyclerAdapter适配器
public class HomeRecyclerAdapter extends RecyclerView.Adapter<HomeRecyclerAdapter.staggerView>{    private List<SupperClass.DataBean.DefaultGoodsListBean> list;    private Context context;    public HomeRecyclerAdapter(Context context, List<SupperClass.DataBean.DefaultGoodsListBean> list) {        this.list = list;        this.context = context;    }    @Override    public staggerView onCreateViewHolder(ViewGroup parent, int viewType) {        View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_home_layout, null, false);        staggerView staggerView = new staggerView(view);        return staggerView;    }    @Override    public void onBindViewHolder(staggerView holder, int position) {     holder.tv1.setText(list.get(position).getGoods_name());        holder.tv2.setText("¥"+list.get(position).getShop_price());        ImageLoader.getInstance().displayImage(list.get(position).getGoods_img(),holder.img);    }    @Override    public int getItemCount() {        return list.size();    }    public static class staggerView extends RecyclerView.ViewHolder{       ImageView img;      TextView tv1,tv2;    public staggerView(View itemView) {        super(itemView);        tv1=(TextView) itemView.findViewById(R.id.tv);        tv2= (TextView)itemView.findViewById(R.id.shop_price);        img =(ImageView) itemView.findViewById(R.id.img);    }}}

布局文件
item_banner
<com.youth.banner.Banner    android:id="@+id/banner"    android:layout_width="match_parent"    android:layout_height="200dp"></com.youth.banner.Banner>

item_home
<android.support.v7.widget.RecyclerView    android:id="@+id/mRecyclerView"    android:layout_width="match_parent"    android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>

item_home_layout
<ImageView    android:id="@+id/img"    android:src="@mipmap/ic_launcher"    android:layout_width="match_parent"    android:layout_height="wrap_content" /><TextView    android:id="@+id/tv"    android:layout_marginLeft="10dp"    android:layout_width="wrap_content"    android:layout_height="wrap_content" /><TextView    android:id="@+id/shop_price"    android:layout_marginLeft="10dp"    android:textColor="@android:color/holo_red_dark"    android:layout_width="wrap_content"    android:layout_height="wrap_content" />
activity_main
<android.support.v7.widget.RecyclerView    android:layout_below="@id/lll"    android:id="@+id/id_recyclerview"    android:divider="#ffff0000"    android:dividerHeight="10dp"    android:layout_width="match_parent"    android:layout_height="wrap_content" />
main_activity中的使用
public class MainActivity extends AppCompatActivity {        private RecyclerView mRecyclerView;    List<SupperClass.DataBean.DefaultGoodsListBean> defaultGoodsList;    String mpath="http://m.yunifang.com/yunifang/mobile/home";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initData();        mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));       // mRecyclerView.setLayoutManager(new GridLayoutManager(this,2));        //mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));    }    protected void initData()    {        OkHttp3Utils.getInstance().doGet(mpath, new GsonObjectCallback<SupperClass>() {            @Override            public void onUi(SupperClass supperClass) {                HomeAdapter homeAdapter = new HomeAdapter(MainActivity.this,supperClass);                mRecyclerView.setAdapter(homeAdapter);            }            @Override            public void onFailed(Call call, IOException e) {            }        });    }}
粘贴okhttp中的五个类
粘贴imageloader中的类
完成
原创粉丝点击