美文网首页
BaseRecyclerViewAdapterHelper 正确

BaseRecyclerViewAdapterHelper 正确

作者: 雨来 | 来源:发表于2022-04-18 10:45 被阅读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();
    

    相关文章

      网友评论

          本文标题:BaseRecyclerViewAdapterHelper 正确

          本文链接:https://www.haomeiwen.com/subject/ztfdertx.html