XRecyclerView是在RecyclerView的基础上可以轻松的实现下拉刷新和上拉加载的一个控件
和添加头部布局和脚部布局
首先第一步 导入依赖compile 'com.jcodecraeer:xrecyclerview:1.2.6'
//找控件 recycler = (XRecyclerView) findViewById(R.id.rv); //设置支持下拉刷新和上拉加载 recycler.setLoadingMoreEnabled(true); recycler.setPullRefreshEnabled(true);
//给XrecyclerView布局管理器
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(Main2Activity.this); linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); recycler.setLayoutManager(linearLayoutManager); //这里Adapter的实现是和Recycle让View的实现的一样的 MyAdapter adapter=new MyAdapter(Main2Activity.this,data); recycler.setAdapter(adapter); recycler.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { presenter.requestShop(1); //设置停止刷新 recycler.refreshComplete(); } @Override public void onLoadMore() { presenter.requestShop(2); //设置停止加载 recycler.loadMoreComplete(); } }); 添加头部recycler.addHeadView(view);
接下来是Adapter的实现
这里的Adapter是实现了3种布局
adapter的实现和RecyclerView的实现方法完全一样
public class MyAdapter extends RecyclerView.Adapter { private Activity context; private List<Shop.DataBean> data; private final int atype=0; private final int btype=1; private final int ctype=2; public MyAdapter(Activity context, List<Shop.DataBean> data) { this.context = context; this.data = data; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //View view = View.inflate(context, R.layout.rv_item, null); View view=null; RecyclerView.ViewHolder holder=null; switch (viewType) { case atype: view = View.inflate(context, R.layout.rv_item1, null); holder=new ViewHolder1(view); break; case btype: view = View.inflate(context, R.layout.rv_item2, null); holder=new ViewHolder2(view); break; case ctype: view = View.inflate(context, R.layout.rv_item3, null); holder=new ViewHolder3(view); break; } return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { switch (getItemViewType(position)) { case atype: ViewHolder1 holder1= (ViewHolder1) holder; holder1.tv_name.setText(data.get(position).title); holder1.tv_price.setText(data.get(position).price+""); String images = data.get(position).images; String[] img = images.split("\\|"); Glide.with(context).load(img[0]).into(holder1.iv); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, Main3Activity.class); intent.putExtra("title",data.get(position).title); context.startActivity(intent); } }); break; case btype: ViewHolder2 holder2= (ViewHolder2) holder; holder2.tv_name.setText(data.get(position).title); holder2.tv_price.setText(data.get(position).price+""); String images1 = data.get(position).images; String[] img1 = images1.split("\\|"); Glide.with(context).load(img1[0]).into(holder2.iv); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, Main3Activity.class); intent.putExtra("title",data.get(position).title); context.startActivity(intent); } }); break; case ctype: ViewHolder3 holder3= (ViewHolder3) holder; holder3.tv_name.setText(data.get(position).title); holder3.tv_price.setText(data.get(position).price+""); String images2 = data.get(position).images; String[] img2 = images2.split("\\|"); Glide.with(context).load(img2[0]).into(holder3.iv); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(context, Main3Activity.class); intent.putExtra("title",data.get(position).title); context.startActivity(intent); } }); break; } } @Override public int getItemCount() { return data.size(); } public class ViewHolder1 extends RecyclerView.ViewHolder{ private final TextView tv_name; private final TextView tv_price; private final ImageView iv; public ViewHolder1(View itemView) { super(itemView); tv_name = itemView.findViewById(R.id.tv_name); tv_price = itemView.findViewById(R.id.tv_price); iv = itemView.findViewById(R.id.iv); } } public class ViewHolder2 extends RecyclerView.ViewHolder{ private final TextView tv_name; private final TextView tv_price; private final ImageView iv; public ViewHolder2(View itemView) { super(itemView); tv_name = itemView.findViewById(R.id.tv_name); tv_price = itemView.findViewById(R.id.tv_price); iv = itemView.findViewById(R.id.iv); } } public class ViewHolder3 extends RecyclerView.ViewHolder{ private final TextView tv_name; private final TextView tv_price; private final ImageView iv; public ViewHolder3(View itemView) { super(itemView); tv_name = itemView.findViewById(R.id.tv_name); tv_price = itemView.findViewById(R.id.tv_price); iv = itemView.findViewById(R.id.iv); } } @Override public int getItemViewType(int position) { if(data.get(position).itemtype==0) { return atype; } else if(data.get(position).itemtype==1) { return btype; } else { return ctype; } } }