目录
- RecyclerView之概述
- RecyclerView之绘制流程
- RecyclerView之Adapter
- RecyclerView之ItemDecoration
- RecyclerView之ItemAnimator
- RecyclerView之DiffUtil
- RecyclerView之缓存策略
概述
Adapter是RecyclerView的第一个内部类,将RecyclerView和视图关联起来。使用的是很方便的,只要继承它,重写几个方法即可。
1 |
|
Adapter
视图模型中,我们只需要改变数据,并发送通知,系统会自动更新UI。
Adapter内部有一个AdapterDataObservable,继承自Java的Observable,使用观察者模式。RecyclerView中RecyclerViewDataObserver进行监听,
最终使用AdapterHelper进行操作。
- notifyItemChanged(int position) 更新列表position位置上的数据可以调用
- notifyItemInserted(int position) 列表position位置添加一条数据时可以调用,伴有动画效果
- notifyItemRemoved(int position) 列表position位置移除一条数据时调用,伴有动画效果
- notifyItemMoved(int fromPosition, int toPosition) 列表fromPosition位置的数据移到toPosition位置时调用,伴有动画效果
- notifyItemRangeChanged(int positionStart, int itemCount) 列表从positionStart位置到itemCount数量的列表项进行数据刷新
- notifyItemRangeInserted(int positionStart, int itemCount) 列表从positionStart位置到itemCount数量的列表项批量添加数据时调用,伴有动画效果
- notifyItemRangeRemoved(int positionStart, int itemCount) 列表从positionStart位置到itemCount数量的列表项批量删除数据时调用,伴有动画效果
- notifyDataSetChanged
ApaterHelper
管理和执行更新操作的帮助类,RecyclerView将每一次更新操作封装成了一个UpdateOp操作,然后通过AdapterHelper进行管理和执行。
当RecyclerView初始化时,会创建AdapterHelper,然后通过实现的dispatchUpdate方法,最终调用布局管理器进行元素的操作。
它内部有一个静态内部类UpdateOp,定义了相应的操作指令:
1 |
|
preProcess
当滑动RecyclerView等原因造成数据改变时,会触发到preProcess方法
1 |
|