BaseRecyclerViewAdapterHelper 正确

2022-04-18  本文已影响0人  雨来

大概什么时候使用的

17年初朋友推荐使用的这个库

它的功能怎么样

基本上能满足99%的列表类需求吧(我是这样认为的)

具体功能

我只说我在项目中用到的吧 加载更多、多条目、数据空布局、添加头和脚布局、DifffUtil算法

好处

当然是省去我们写模板代码 提高生产效率了

错误的使用方式

无论上拉加载和下拉刷新 添加数据的方式全部用

 adapter.addData();

通过上面这种方法添加数据 如果下拉刷新(你需要下拉刷新) 为了保证数据的准确性 则你必会调用

adapter.getData().clear();
adapter.notifyDataSetChanged();

通过上面代码刷新的方式 你的界面一定会闪屏 (所以解决闪屏)并不是人家适配器的问题 是你使用方式不对导致的

正确的使用方式是

1、下拉刷新使用
如果判断是下拉刷新呢 如果结合SwipeRefreshLayout的话 那么这个调用的开始 应该是 在onRefresh 回调方法里 那么 page 应该是1的时候

adapter.setList();

2、上拉加载更多使用

 adapter.addData();

DiffUtil正确的使用方式是

1、设置完适配器后 调用diff回调

adapter.setDiffCallback(new DiffShortVideoList());
/**
 *  短视频列表的 差异算法
 */
class DiffShortVideoList():DiffUtil.ItemCallback<ShortVideoListBean.DataDTO.RecordsDTO>() {
    override fun areItemsTheSame(
        oldItem: ShortVideoListBean.DataDTO.RecordsDTO,
        newItem: ShortVideoListBean.DataDTO.RecordsDTO
    ): Boolean {
        return  oldItem.id == newItem.id
    }

    override fun areContentsTheSame(
        oldItem: ShortVideoListBean.DataDTO.RecordsDTO,
        newItem: ShortVideoListBean.DataDTO.RecordsDTO
    ): Boolean {
      return oldItem.toString().equals(newItem.toString())
    }
}

加入 DiffUtil的好处 如果你刷新一下接口 在Adapter里面的Convert 打印日志和不加DiffUtil打印日志 你对比一下就可以发现了

2、下拉刷新使用
如果判断是下拉刷新呢 如果结合SwipeRefreshLayout的话 那么这个调用的开始 应该是 在onRefresh 回调方法里 那么 page 应该是1的时候

adapter.setDiffNewData();

3、上拉加载更多使用

 adapter.addData();
上一篇 下一篇

猜你喜欢

热点阅读