Android 使用 DiffUtil 处理 RecyclerView 数据更新问题
背景
-
RecyclerView.Adapter#notifyDataSetChanged()
会每次刷新整个布局; -
每次手动调用
RecyclerView.Adapter#notifyItemXx
系列方法很麻烦; - 需要在新增的项目中跟旧的列表项重复时,只更新内容,而不是插入重复项。
DiffUtil
DiffUtil
就是为了简化 RecyclerVeiw 更新数据操作而生。其关键类和方法如下:
步骤
-
创建一个类实现
DiffUtil.Callback
; - 当新数据到来时,实例化自定义的 callback,传入新旧数据;
-
在子线程调用
DiffUtil#calculateDiff
计算差异; -
将差异结果
DiffResult
更新到 RecyclerView.Adapter 中。
更多
-
使用
android.support.v7.recyclerview.extensions.ListAdapter
和android.support.v7.recyclerview.extensions.AsyncListDiffer
发布于 2018-10-18 07:37