主要方法
- recycle
- item 滑出屏幕时
- findFromCache
- item 出现在屏幕时
主要数据结构
- mCachedViews
- 最大个数为 2
- FIFO
- mRecyclerPool
- SparseArray. key: itemType, value: ArrayList
- value 的最大个数为 DEFAULT_MAX_SCRAP[5] ,可以修改
- SparseArray. key: itemType, value: ArrayList
- recycle -> putCacheView -> exceed limit? -> put recyclerPool -> exceed limit? -> discard
TIP
- GridLayoutManager 的 spancout 如果大于 5 则需要调整 DEFAULT_MAX_SCRAP 的最大限制
- 慎用 notifyDataSetChanged , 此方法会使所有的 ViewHolder 失效,itemCount - DEFAULT_MAX_SCRAP 个 item 会重走 onCreateViewHolder