RecycleView理解

本文深入探讨了RecycleView与传统ListView的对比,详细分析了RecycleView的组件、缓存管理和性能优化策略。从ViewHolder机制到LayoutManager,再到ItemAnimator和Adapter,全面解析RecycleView的工作原理。同时,提供了多种性能优化技巧,包括点击监听优化、预加载配置、固定尺寸设置、缓存池共享及DiffUtil使用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RecycleView与ListView对比

一.Listview得局限
1.不支持横向
2.没有支持动画
3.接口设计和系统不一致
4.没有强制实现ViewHolder
5.性能不如RecycleView
二.RecycleView得优势

RecycleView的重要组件

一.ViewHolder究竟是什么
1.ViewHolder 和item view是一一对应的关系
2.ViewHolder解决的是防止重复findViewbyId
3.ViewHolder和ItemView复用没有关系
二.layoutManager
三.item Animator
四.adapter

RecycleView的缓存管理

1.Scrap (通过position找到view的,不需要重新绑定数据)
2.Cache(通过position找到view的,不需要重新绑定数据)
3.ViewCacheExtension
4.RecycledViewPool(通过viewTyple找到view的,数据是脏数据,需要重新绑定数据的 )

RecycleView的性能优化策略

1.在onBindViewHolder里设置点击监听?
会导致重复的创建对象,在onCreatViewHolder里面处理

2.LinearLayoutManager.setInitialPrefetchItemCount(横向列表初次显示时可见的Item个数)
3.Recycleview.setHasFixedSize 如果Adapter的数据变化不会导致RecycleView的大小变化就可以选择setHasFixedFixedSize(true)

4.多个RecycleView公用RecycledViewPool
RecycleView.recycledViewPool recyPool=new RecycleView.RecycledViewPool();
recycler.setRecycledVIewPool(recyPool)
recycler2.setRecycledVIewPool(recyPool)
5.DiffUtil使用

RecycleView相关文章总结

1.RecycleView优化相关
链接: https://www.jianshu.com/p/1d2213f303fc
共用缓存: https://www.jianshu.com/p/b3f60db78f9e
setHasFixedSize原理: https://www.jianshu.com/p/79c9c70f6502
2.RecycleView复用相关
结合示例理解: https://juejin.im/post/6844903583259820039#heading-1.
3.RecycleView绘制相关
链接: https://www.jianshu.com/p/c52b947fe064.
链接: https://www.jianshu.com/p/28ea89c21a11.
链接: https://www.jianshu.com/p/f91b41c8f487.
链接: https://blog.youkuaiyun.com/m0_37796683/article/details/105511855?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight.
4.RecycleView滑动相关
https://www.jianshu.com/p/c89c99736c05.

作者写了RecycleView系列的文章,,不懂的后续查看
RecyclerView 源码分析(一) - RecyclerView的三大流程: https://www.jianshu.com/p/61fe3f3bb7ec.

RecyclerView源码分析之onMeasure,onLayout,onDraw:
https://blog.youkuaiyun.com/qq_36391075/article/details/82022305

RecyclerView局部刷新和原理介绍:
https://blog.youkuaiyun.com/ZHXLXH/article/details/88344955
https://blog.youkuaiyun.com/weixin_34233618/article/details/91423276?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.baidujs&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.baidujs
https://blog.youkuaiyun.com/haoxuhong/article/details/86164101

RecycleView:Prefetch功能探究
https://blog.youkuaiyun.com/crazy_everyday_xrp/article/details/70344638

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值