大概什么时候使用的
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();
网友评论