持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天,点击查看活动详情
为了活动小家电,接着上篇搞!
它究竟是如何工作的?
到目前为止,如果您已经基本了解了RecyclerView由哪些组件组成,您可能想知道这个视图实际上是如何工作的。
假设我们有 60 个项目需要在屏幕上滚动,但这里我们只想一次显示 6 个项目。
让每个项目都有自己的 viewholder 实例,并且 viewholder 在缓存特定项目视图时会有所帮助。那么,recyclerview 是如何应用的呢?
-
首先,
item0
到item5
应在首次执行时显示在屏幕上。因此,它们在可见视图模式下有6个item
。之后,当向上滚动列表时,item6
应该作为下一个新项目加载。 -
当我们滚动一个屏幕时,
item0
和item6
移动,item6
应该出现在视图中。这时item 7
会在等待展示,根本看不到view,而是一个等待显示的区域。同时item0
移动到屏幕顶部并被scrapped view
调用。 -
所以当我们滚动浏览下一个时,
item1
从屏幕上消失了,item7
出现了。与此同时,item1
也变成了一scrapped view
,我们有这时候有了两个scrapped view
。(item 0, item 1) 这些项目将存储在一个废弃视图的集合中。 -
现在,当我们需要将
item8
加载到可见区域时,我们从的scrapped view
集合中获取视图。从scrapped view
集合加载的视图dirty view
称为 . 此视图被回收并重新定位到队列中应显示在屏幕item8
上。
这些流程是在recyclerview 中进行回收的方式,也是recyclerview 改进的主要原因之一。在这个过程中,item被重复使用以在屏幕上渲染新数据。
总结
由于 View Holders 和 Recycled Views,我们提高了 Recyclerview 的性能。下次有机会再通过源码分析吧。