BaseRecyclerViewAdapterHelper3.x版使用指南

BaseRecyclerViewAdapterHelper的作者很勤快,BaseRecyclerViewAdapterHelper库也很优秀,平常工作中,都是使用BaseRecyclerViewAdapterHelper开发的,用习惯了,有点依赖放不开咯!

3.x版也是更新很长时间,还没来得及体验,其实不是,之前那会升级过一次,很懵逼,不知咋用,和旧版使用有很大区别,后面考虑到项目的原因,同时也没有太多时间去研究,故依然使用2.x版。

最近换工作,有了更多空闲时间,是时候来想学习3.x版使用,这里只是涉及平常使用最多的地方,没有更深入的研究,当然了,后面会继续深入学习。共勉!

目前使用BaseRecyclerViewAdapterHelper最新版是3.0.6版,3.x版后很多写法都发生很大变化。下面我们通过一个简单的例子来学习。

效果图:
在这里插入图片描述
代码:

    private RecyclerView mJokeRecycler;
    private JokeAdapter jokeAdapter;
    private Joke mJoke;
    private List<Joke> mListJoke;
    private List<Joke> mNewListJoke;

    protected void initView() {
        mJokeRecycler = findViewById(R.id.rv_joke);
        mListJoke = new ArrayList<>();
        mNewListJoke = new ArrayList<>();
    }

    protected void initData() {
        for (int i = 0; i < 20; i++) {
            mJoke = new Joke();
            mJoke.setJokeTitle(i+"默认数据");
            mListJoke.add(mJoke);
        }
        setRecyclerView();
    }

    private void setRecyclerView() {
        //new GridLayoutManager(getContext(), 3, GridLayoutManager.VERTICAL, false)
        mJokeRecycler.setLayoutManager(new LinearLayoutManager(JokeActivity.this, LinearLayoutManager.VERTICAL, false));
        jokeAdapter = new JokeAdapter(R.layout.item_rv_joke, mListJoke);
        mJokeRecycler.setAdapter(jokeAdapter);
        //mListRecycler.setNestedScrollingEnabled(false);
        jokeAdapter.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                
            }
        });
        //3.x版使用
        jokeAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore() {
                mNewListJoke.clear();//注意清理集合,不然上拉加载的数据会出现重复
                request();
            }
        });
        jokeAdapter.getLoadMoreModule().setAutoLoadMore(false);
        //当自动加载开启,同时数据不满一屏时,是否继续执行自动加载更多(默认为true)
        jokeAdapter.getLoadMoreModule().setEnableLoadMoreIfNotFullPage(false);
        //1.上拉加载=2.x版使用
        /*jokeAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
            @Override
            public void onLoadMoreRequested() {
                mJokeRecycler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        if (mCurrentCounter >= TOTAL_COUNTER) {
                            //数据全部加载完毕
                            jokeAdapter.loadMoreEnd();
                        }else {
                            if (!isErr) {
                                isUpdate = true;
                                //成功获取更多数据
                                jokeAdapter.addData(getServerDatas());
                                mCurrentCounter = jokeAdapter.getData().size();
                                jokeAdapter.loadMoreComplete();
                            } else {
                                //获取更多数据失败 PullToRefreshUseActivity
                                isErr = true;
                                Toast.makeText(JokeActivity.this, "获取更多数据失败", Toast.LENGTH_LONG).show();
                                jokeAdapter.loadMoreFail();

                            }
                        }
                    }

                }, 2000);
            }
        }, mJokeRecycler);*/
    }

    private void request() {
        //省略网络请求数据......
        //网络请求成功后下拉刷新与上拉加载都做如下处理:

        for (int j = 0; j < 10; j++) {
            mJoke = new Joke();
            mJoke.setJokeTitle(j+"上拉加载更多数据");
            mNewListJoke.add(mJoke);
        }

//        if (isUpdate) {
            //不是第一页,则用add
            jokeAdapter.addData(mNewListJoke);
//        } else {
//            //如果是加载的第一页数据,用 setData()
//            jokeAdapter.setList(mNewListJoke);
//        }

        //如何判断已经加载完数据
        if (mNewListJoke.size() < PAGE_SIZE) {
            //如果不够一页,显示没有更多数据布局
            jokeAdapter.getLoadMoreModule().loadMoreEnd();
        } else {
            jokeAdapter.getLoadMoreModule().loadMoreComplete();
        }
        // page加一
        //++page;

    }


适配器

/**
 * Created by Administrator on 2021/5/23.
 * @author 小红妹
 */

public class JokeAdapter extends BaseQuickAdapter<Joke, BaseViewHolder> implements LoadMoreModule {

    //这里需要注意一下,2.x版是有@Nullable,3.x版需要去掉,不然,首次默认加载的数据会出现重复
    /*public JokeAdapter(int layoutResId, @Nullable List<Joke> data) {
        super(layoutResId, data);
    }*/

    public JokeAdapter(int layoutResId, List<Joke> data) {
        super(layoutResId, data);
    }

    @Override
    protected void convert(BaseViewHolder helper, Joke item) {
        //加载网络图片  mURL
        helper.setText(R.id.tv_joke_item_title, item.getJokeTitle())
                .setText(R.id.tv_joke_item_time,item.getJokeTime()+"");
//        if (item.getClassificationName().length() > 5) {
//            helper.setText(R.id.tv_list_name, item.getClassificationName().substring(0,5)+"...");
//        } else {
//            helper.setText(R.id.tv_list_name, item.getClassificationName());
//        }

    }

}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BaseRecyclerViewAdapterHelper(以下简称BRVAH)是一个强大的 RecyclerView 适配器库。它可以方便地实现 RecyclerView 的各种功能,如多类型布局、加载更多、空布局、拖拽移动、侧滑删除等。而 QuickAdapterHelper 则是 BRVAH 的简化,只保留了最基础的功能,使用起来更加简单。 下面是 QuickAdapterHelper 的使用方法: 1. 在 app 的 build.gradle 文件中添加以下依赖: ``` dependencies { implementation 'com.android.support:recyclerview-v7:28.0.0' implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.47' } ``` 2. 创建一个 Adapter 类,并继承 QuickAdapterHelper: ``` public class MyAdapter extends QuickAdapterHelper<String> { public MyAdapter(List<String> data) { super(R.layout.item_layout, data); } @Override protected void convert(QuickViewHolder holder, String item) { // 设置 item 布局中的控件值 holder.setText(R.id.tv_name, item); } } ``` 上面的代码中,R.layout.item_layout 是 item 的布局文件,data 是数据源。在 convert() 方法中,我们可以通过 QuickViewHolder 来设置 item 布局中的控件值。 3. 在 Activity 或 Fragment 中使用 Adapter: ``` RecyclerView recyclerView = findViewById(R.id.recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this)); MyAdapter adapter = new MyAdapter(data); recyclerView.setAdapter(adapter); ``` 上面的代码中,data 是数据源,通过 MyAdapter 的构造函数传入。最后将 adapter 设置到 RecyclerView 中即可。 这样就完成了一个简单的 RecyclerView 列表展示。如果需要实现更多的功能,可以参考 BRVAH 的文档进行扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值