通过DiffUtil高效更新RecyclerView
来源:互联网 发布:node.js 安装教程 编辑:程序博客网 时间:2024/06/06 00:16
通过DiffUtil高效更新RecyclerView
DiffUtil是RecyclerView support library v7 24.2.0 版本中新增加的类
用于比较两个数据列表并能计算出一系列将旧数据表转换成新数据表的操作。
DiffUtil是一个工具类,当你的RecyclerView需要更新数据时,将旧数据集传给它,它就能快速告知adapter有哪些数据需要更新。
优势
相比直接调用adapter.notifyDataSetChange()方法
DiffUtil能再收到数据集后,提高UI更新的效率,而且你也不需要自己对新老数据集进行比较了
凡是数据集的比较DiffUtil都能做,所以用处并不止于更新RecyclerView,DiffUtil也提供了回调让你可以进行其他操作。本文只讨论使用DiffUtil更新RecyclerView。
DiffUtil用最简单的方式将一个数据集转换为另一个。
DiffUtil可以识别意向数据在数据集中的移动。(如果数据集中数据不存在移位情况,你可以关闭移动识别功能来提高性能)
当数据集较大时,你应该在后台线程计算数据集的更新。
使用
使用DiffUtil时设计以下几个核心类
DiffUtil.Callback
最核心类,不要被命名困惑,它不像日常所使用的回调。你可以将它理解成 比较新老数据集时的规则
DiffUtil
通过静态方法DiffUtil.calculateDiff(DiffUtil.Callback)来计算数据集的更新。
DiffResult
DiffResult:是DiffUtil的计算结果对象,通过DiffResult.dispatchUpdatesTo(RecyclerView.Adapter)来进行更新。
DiffUtil可用于高效进行RecyclerView的数据更新,但DiffUtil本身的作用是计算数据集的最小更新。DiffUtil有强大的算法支撑,可以利用DiffUtil完成许多其他功能。
具体请看
https://developer.android.com/reference/android/support/v7/util/DiffUtil.html
http://blog.chengdazhi.com/index.php/231?sukey=3997c0719f151520abc3703315e3fef6e18ec9dce4f81882490fce74f3aae8be1eb373fcd36a9b3faaddddcea988dbfa
其他
Demo示例
- 通过DiffUtil高效更新RecyclerView
- 使用DiffUtil高效更新RecyclerView
- android局部更新(RecyclerView+ DiffUtil)
- [译]使用DiffUtil更新RecyclerView的智能方式
- RecyclerView配合DiffUtil
- 通过广播更新RecyclerView
- RecyclerView 配合 DiffUtil,好用到飞起
- RecyclerView 配合 DiffUtil,好用到飞起
- RecyclerView 配合 DiffUtil,好用到飞起
- 新的工具类DiffUtil,让RecyclerView上天
- Android新的工具类DiffUtil,RecyclerView的进化使用
- 为你的RecyclerView.Adapter添加通用DiffUtil适配器
- android中RecyclerView的使用并结合DiffUtil的运用
- 【Android】DiffUtil新工具类,让你的RecyclerView飞一会
- Android DiffUtil新工具类,让你的RecyclerView飞一会
- 搭配BRVAH高效使用RecyclerView
- RecyclerView通过notifyItemChanged方法更新item时避免闪烁的方法
- RecyclerView更新数据
- Linux删除创建的用户并同时删除帐户的主目录
- 【LintCode】Reverse Words in a String 翻转字符串
- spring中如何读取.properties配置文件
- 互联网协议入门(二) 作者:阮一峰
- JavaWeb如何将后台数据传递到前台页面HttpServletResponse和HttpServletRequest
- 通过DiffUtil高效更新RecyclerView
- 基于注解的测试Spring-aop通知顺序
- Hashtable源码剖析
- selenium之 文件上传所有方法整理总结
- 关于一个失败程序生涯的自省。
- 《01. oralce 对象管理--表》
- Android侧边滑动菜单
- 面试技术汇总
- 《02. oracle 对象管理--约束》