前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记——RecycleView相关(五)

笔记——RecycleView相关(五)

作者头像
木溪bo
发布2018-12-27 10:13:13
3990
发布2018-12-27 10:13:13
举报
《个人平时笔记,看到的同学欢迎指正错误》
1、RecycleView复用原理:https://www.cnblogs.com/dasusu/p/7746946.html

回收的逻辑比较简单:由 LayoutManager 来遍历移出屏幕的卡位,然后对每个卡位进行回收操作,回收时,都是把 ViewHolder 放在 mCachedViews 里面,如果 mCachedViews 满了,那就在 mCachedViews 里拿一个 ViewHolder 扔到 ViewPool 缓存里,然后 mCachedViews 就可以空出位置来放新回收的 ViewHolder 了。

RecyclerView 滑动场景下的回收复用涉及到的结构体两个: mCachedViews 和 RecyclerViewPool mCachedViews优先级高于 RecyclerViewPool,回收时,最新的 ViewHolder 都是往 mCachedViews 里放,如果它满了,那就移出一个扔到 ViewPool 里好空出位置来缓存最新的 ViewHolder。复用时,也是先到 mCachedViews 里找 ViewHolder,但需要各种匹配条件,概括一下就是只有原来位置的卡位可以复用存在mCachedViews 里的 ViewHolder,如果 mCachedViews 里没有,那么才去 ViewPool 里找。在 ViewPool 里的 ViewHolder 都是跟全新的 ViewHolder 一样,只要 type 一样,有找到,就可以拿出来复用,重新绑定下数据即可。

>1.

1.png

1.png

>2.mCachedViews与ViewPool区别 mCachedViews回收ViewHolder:重新回到可视区是不用重新绑定数据,从mCachedViews复用直接显示 ViewPool复用ViewHolder:复用需要重新绑定数据,回调onBindViewHolder()

2.png

2.png

>3. 如果mCachedViews——>ViewPool 中都没有找到 ViewHolder 来使用的话,那就调用 Adapter 的 onCreateViewHolder 来创建一个新的 ViewHolde

3.png

3.png

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 《个人平时笔记,看到的同学欢迎指正错误》
  • 1、RecycleView复用原理:https://www.cnblogs.com/dasusu/p/7746946.html
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档