XRecyclerView下拉刷新,上拉加载

XRecyclerView简化了RecyclerView的上拉加载和下拉刷新操作,通过简单的调用方法即可实现。本文将介绍如何配置build.gradle文件添加依赖,以及在布局和Activity中的使用步骤,展示如何实现一个包含多条目的RecyclerView加载效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在RecyclerView的上拉加载使用会比较麻烦,而XRecyclerView非常方便的决解了这些问题,都已经封装好了,我们只需要调用方法就OK了。下面是XRecyclerView的使用。

因为接口原因这里我只做了一个下拉刷新

因为接口原因这里我只做了一个下拉刷新

配置build.gradle文件中直接添加依赖

   compile 'com.jcodecraeer:xrecyclerview:1.3.2'   

在布局中:

 <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:layout_width="match_parent"
        android:id="@+id/xre_xrv"
        android:layout_height="match_parent">

    </com.jcodecraeer.xrecyclerview.XRecyclerView>

在Activity中:

public class RxActivity extends AppCompatActivity {
   private XRecyclerView xr;
    private List<String > list=new ArrayList<>();
    //获取数据的开始
    private int curr;
    private XRAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_rx);

        //初始化xr
        xr= (XRecyclerView) findViewById(R.id.xre_xrv);
      //加布局管理器
        LinearLayoutManager layoutManager=new LinearLayoutManager(this);
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        xr.setLayoutManager(layoutManager);
         //允许刷新加载
     xr.setPullRefreshEnabled(true);
        xr.setLoadingMoreEnabled(true);
        xr.setLoadingListener(new XRecyclerView.LoadingListener() {
        //刷新
            @Override
            public void onRefresh() {
                curr=0;
                list.clear();
                getData(API.TYPE_HOME,curr);
                xr.refreshComplete();
            }
        //加载
            @Override
            public void onLoadMore() {
             /*   curr++;
                getData(API.TYPE_HOME,curr);
                xr.loadMoreComplete();*/
            }
        });
        getData(API.TYPE_HOME,1);
    }

   //初始化数据
    private void getData(String url,int curr){
        OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<HomeBean>() {
            @Override
            public void onUi(HomeBean homeBean) {
                homeBean.getMsg();
                //关联适配器,并将集合传入适配器
                XRAdapter  mxradapter=new XRAdapter(RxActivity.this,homeBean.getData());
                xr.setAdapter(mxradapter);



            }

            @Override
            public void onFailed(Call call, IOException e) {

            }
        });


    }
}

这里是一个RecyclerView的多条目加载
适配器:

public class XRAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
    HomeBean.DataBean list;
    Context mcontext;
    ArrayList  mlist;

    //枚举类型
      private  enum  Item_Type{

          Typeone ,Typetwo,Typethree,Typefour

    }
    public XRAdapter(Context context, HomeBean.DataBean data) {
        this.mcontext=context;
        this.list=data;

    }
    /**
     * 创建ViewHolder
     *
     * @param parent
     * @param viewType :不同ItemView的类型
     * @return
     */
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        if (viewType == Item_Type.Typeone.ordinal()) {
            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_a, null);
            ViewHolderA viewHolder = new ViewHolderA(mView);
            return viewHolder;

        } else if (viewType == Item_Type.Typetwo.ordinal()) {

            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_b, null);
            ViewHolderB viewHolder = new ViewHolderB(mView);
            return viewHolder;
        } else if (viewType == Item_Type.Typethree.ordinal()) {
            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_c, null);
            ViewHolderC viewHolder = new ViewHolderC(mView);
            return viewHolder;
        }else if (viewType == Item_Type.Typefour.ordinal()) {
            View mView = LayoutInflater.from(mcontext).inflate(R.layout.recycle_item_d, null);
            ViewHolderD viewHolder = new ViewHolderD(mView);
            return viewHolder;
        }
        return null;
    }

    /**
     * 绑定数据:可以直接拿到已经绑定控件的Viewholder对象
     *
     * @param holder
     * @param position
     */
    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if (holder instanceof ViewHolderA) {
            mlist=new ArrayList();
            for(int i=0;i<list.getAd1().size();i++){
                mlist.add(list.getAd1().get(i).getImage());
            }
            //设置图片加载器
            ((ViewHolderA) holder).mbanner.setImageLoader(new GlideImaGlideImageLoader());
            ((ViewHolderA) holder).mbanner.setImages(mlist);
            ((ViewHolderA) holder).mbanner.start();

        } else if (holder instanceof ViewHolderB) {
           ((ViewHolderB) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name() + "------样式二");
        } else if (holder instanceof ViewHolderC) {
            ((ViewHolderC) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式三");
        }else if (holder instanceof ViewHolderD) {
            ((ViewHolderD) holder).text.setText(list.getDefaultGoodsList().get(position).getGoods_name()+ "------样式4");
        }

    }

    @Override
    public int getItemCount() {
        return 4;
    }
    //返回值赋值给onCreateViewHolder的参数 viewType
    @Override
    public int getItemViewType(int position) {
       // return super.getItemViewType(position);

        if (position == 0) {
            return Item_Type.Typeone.ordinal();
        } else if (position == 1) {
            return Item_Type.Typetwo.ordinal();
        } else if (position == 2) {
            return Item_Type.Typethree.ordinal();
        }else if (position == 3) {
            return Item_Type.Typefour.ordinal();
        }
        return -1;


    }
    class ViewHolderA extends RecyclerView.ViewHolder {
        public Banner mbanner;

        public ViewHolderA(View itemView) {
            super(itemView);

            mbanner = (Banner) itemView.findViewById(R.id.mybanner);
        }
    }


    class ViewHolderB extends RecyclerView.ViewHolder {

        public TextView text;

        public ViewHolderB(View itemView) {
            super(itemView);
            text = (TextView) itemView.findViewById(R.id.tvb);
        }
    }

    class ViewHolderC extends RecyclerView.ViewHolder {

        public TextView text;

        public ViewHolderC(View itemView) {
            super(itemView);
            text = (TextView) itemView.findViewById(R.id.tvc);
        }
    }
    class ViewHolderD extends RecyclerView.ViewHolder {

        public TextView text;

        public ViewHolderD(View itemView) {
            super(itemView);
            text = (TextView) itemView.findViewById(R.id.tvd);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值