xRecyclerView简单实现下拉刷新和上拉加载

 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;
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值