RecelyView 详解(二)

2020-11-17  本文已影响0人  misLiu

RecelyView 详解(一) - 简书

下面我准备看一下Recycler的机制 

Recycler

在RecelyViw 里面可以看到实例话 recelyview创建了Recycler现在知道了 Recycler的初始值,在介绍一下Recycler的核心的几个列表后续的操作都是围绕着 这几个列表进行处理。

RecyclerList

上面可以看到Recycler持有了几个集合,咱们先从RecycledViewPool入手

RecycledViewPool

图上可以看出RecycledViewPool的设置有两种一种是调用getRecycledViewPool 一种是咱们自主设置的RecycledbviewPool 进行了重置连接数操作 从RecycledViewPool了解到 主要是对mScrapHeap进行管理 咱们围绕着mScrapHeap 看一下。

mScrapHeap

图上显示一共有两个集合一个是mScrapHeap废弃的viewHoder一个是对ScrapData对象管理的集合,还是从添加数据开始

putRecycledView

图上看到对废弃的ViewHoder添加viewhoder 根据每个getItemViewType进行判断当前类型的缓存是否已经达到上限,如果没有则添加

addViewHolderToRecycledViewPool addViewHolderToRecycledViewPool

最后发现offsetPositionsForRemovingInvisible会调用可以看一下上一篇文章看一下这个回调,当删除,更新缓存大小,清除缓存的view调用废弃的缓存,只要有缓存操作或者有移除动作会添加,现在知道的数据来源接下来看一下删除

clear

清除就很好理解了直接遍历了缓存的type集合然后清楚每个type下存储的viewhoder。调用也比较简单setAdapter ()

RecycledViewPool  总结

如果没有设置RecycledviewPool将会在调用getRecycledViewPool时进行创建,当更新缓存长度,删除item缓存,对缓存进行操作RecycledViewPool会里面的mScrap会根据type添加缓存ViewHodler的列表,当调用onBindeView调用factorInBindTime获取缓存的

上一篇下一篇

猜你喜欢

热点阅读