关键类:
- 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
- 列表过度绘制
- 插入、删除等不要全局刷新
本文深入解析了RecyclerView的工作原理,包括Adapter的数据绑定、LayoutManager的item布局、ItemDecoration的装饰效果、ItemAnimator的动画实现,以及缓存机制的优化策略。探讨了如何通过自定义ViewCacheExtension和RecycledViewPool来提升性能,并提供了添加Header、Footer、下拉加载更多、Item点击事件及局部刷新的优化建议。
1824

被折叠的 条评论
为什么被折叠?



