相关文章推荐
酷酷的柑橘  ·  Android ...·  2 周前    · 
刚失恋的黄瓜  ·  android ...·  2 周前    · 
难过的盒饭  ·  recyclerview 横滑 item ...·  1 周前    · 
八块腹肌的松鼠  ·  yql - Yahoo Weather ...·  1 年前    · 

Android 使用 DiffUtil 处理 RecyclerView 数据更新问题

背景

  1. RecyclerView.Adapter#notifyDataSetChanged() 会每次刷新整个布局;
  2. 每次手动调用 RecyclerView.Adapter#notifyItemXx 系列方法很麻烦;
  3. 需要在新增的项目中跟旧的列表项重复时,只更新内容,而不是插入重复项。

DiffUtil

DiffUtil 就是为了简化 RecyclerVeiw 更新数据操作而生。其关键类和方法如下:

步骤

  1. 创建一个类实现 DiffUtil.Callback
  2. 当新数据到来时,实例化自定义的 callback,传入新旧数据;
  3. 在子线程调用 DiffUtil#calculateDiff 计算差异;
  4. 将差异结果 DiffResult 更新到 RecyclerView.Adapter 中。

更多

  • 使用 android.support.v7.recyclerview.extensions.ListAdapter android.support.v7.recyclerview.extensions.AsyncListDiffer
发布于 2018-10-18 07:37

文章被以下专栏收录