Android 三方控件BaseRecyclerViewAdapterHelper的简单使用

1,355 阅读2分钟

这是我参与 8 月更文挑战的第 9 天,活动详情查看: 8月更文挑战

背景

RecyclerView作为Android最常用的控件之一,是否常常为“她”操碎了心, 偶然的机会接触到了BRVAH, 在实际开发中直接被圈粉, 本章只是为了介绍BRVAH常用方法, 仅供参考

集成

详情请参见上一篇文章集成部分

点击事件

RecyclerView自带的Adapter是没有item的点击事件的, 需要我们自己去实现, 但是BRVAH是已经实现好的, 只需要我们自己写对应的逻辑就好了

  • item的点击事件
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
                Log.d(TAG, "onItemClick: ");
                Toast.makeText(ItemClickActivity.this, "onItemClick" + position, Toast.LENGTH_SHORT).show();
            }
        });
  • item的长按时间
adapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() {
           @Override
           public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
               Log.d(TAG, "onItemLongClick: ");
               Toast.makeText(ItemClickActivity.this, "onItemLongClick" + position, Toast.LENGTH_SHORT).show();
               return false;
           }
       });
  • item的子视图点击事件 需要先在Adapterconvert方法中添加子视图的监听
.addOnClickListener(R.id.tweetAvatar)
.addOnClickListener(R.id.tweetName)

然后在代码中注册AdaptersetOnItemChildClickListener的点击事件

 adapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
           @Override
           public boolean onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
               Log.d(TAG, "onItemChildClick: ");
               Toast.makeText(ItemClickActivity.this, "onItemChildClick" + position, Toast.LENGTH_SHORT).show();
               return false;
           }
       });
  • item的子视图长按事件 需要先在Adapterconvert方法中添加子视图的监听
.addOnLongClickListener(R.id.tweetAvatar)
.addOnLongClickListener(R.id.tweetName)

然后在代码中注册AdaptersetOnItemChildClickListener的点击事件

adapter.setOnItemChildLongClickListener(new BaseQuickAdapter.OnItemChildLongClickListener() {
           @Override
           public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) {
               Log.d(TAG, "onItemChildLongClick: ");
               Toast.makeText(ItemClickActivity.this, "onItemChildLongClick" + position, Toast.LENGTH_SHORT).show();
           }
       });

空视图

在列表中经常会有数据为空, 显示一个空视图的的需求, 使用BRVAH来设置就最简单不过了, 只需一句话和一个layout的文件

mQuickAdapter.setEmptyView(getView());

效果如下 30015055-a63075c6-9181-11e7-8e47-afa430593c28.gif

添加Header和Footer

在列表中上拉加载和下拉刷新, 基本是每个列表必备功能, 可以通过Header和Footer进行实现, 这仅为一种方案, 有更好的可以略过

  • 添加Header和Footer
mQuickAdapter.addHeaderView(getView());
mQuickAdapter.addFooterView(getView());
  • 删除指定Header和Footer
mQuickAdapter.removeHeaderView(getView);
mQuickAdapter.removeFooterView(getView);
  • 删除全部Header和Footer
mQuickAdapter.removeAllHeaderView();
mQuickAdapter.removeAllFooterView();

效果如下

30015052-a60f5fbc-9181-11e7-9c74-3998afc6f2c8.gif

文章中的图片来自BaseRecyclerViewAdapterHelper网站