RecycleView
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