关键类:
- Adapter:负责数据的绑定
- LayoutManager:负责item的布局
- 协助RecyclerView完成OnMeasure过程
- 通过onLayoutChildren完成对子View的布局
- 滚动子视图
- 滚动过程中判断何时添加View,何时回收View,也是对缓存时机的判断
- ItemDecoration:添加分割线,做一些装饰
- RecyclerView:view类,控制缓存
- mChangedScrap(屏幕内缓存),数据已变的,在每次view绘制时用到
- mAttachedScrap(屏幕内缓存),未与RecyclerView分离的,在adapter.notifyxxx时用到
- mCachedViews(屏幕外缓存),ViewHodler缓存列表,默认容量为2,在放不下的时候放入缓存池
- ViewCacheExtension,开发中可以自定义的一层缓存
- RecycledViewPool,缓存池,
SparseArray<ArrayList<ViewHolder>> mScrap
,存入的时候会清除状态,所以再从中取出来的时候需要重新绑定。
- ItemAnimator:负责tem的动画
一些可优化操作:
- 添加Header、Footer(可通过装饰者模式)
- 下拉加载更多
- Item点击事件
- Item中控件局部刷新
notifyItemChanged(position,payLoads)
通过此方法进行刷新onBindViewHolder(holder,position,payLoads)
重新此方法,设置新的数据到view
- 列表过度绘制
- 插入、删除等不要全局刷新
来源:51CTO
作者:ikata
链接:https://blog.csdn.net/qq_38410236/article/details/100804477