面试系列——ListView 和 RecyclerView 简要对比分析
Posted BridgeGeorge
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试系列——ListView 和 RecyclerView 简要对比分析相关的知识,希望对你有一定的参考价值。
使用上
ListView:
- 继承重写BaseAdapter类;
- 自定义ViewHolder与convertView的优化;
- 默认不支持单个View 刷新
RecyclerView:
- 继承重写RecyclerView.Adapter与RecyclerView.ViewHolder
- 设置LayoutManager,以及layout的布局效果
- 支持局部刷新和动画
缓存
ListView
二级缓存 :屏幕内View 屏幕外View
RecyclerView
四级缓存 :屏幕内View 屏幕外View
ViewCacheExtension(用户自定义)
继承ViewCacheExtension实现
列表有固定的数量条目和宽高,这样子,列表初始化的时候就能直接从这级缓存拿到ViewHolder,不需要再创建ViewHolder,大大节省时间,提高效率,需要自己去管理释放缓存。
RecyclerPool (用户自定义)
多个RecycleView可共享,可用于多个RecyclerView的优化
ViewPager 多个页面 有同样的RecyclerView item 可以设置 一个 RecyclerPool。
选取策略
- 性能上: RecyclerView 并不比ListView 有明显的性能优势。
- 功能上: RecyclerView 适用于灵活布局时,新组件开发优先选取RecyclerView 。
附录
RecyclerView 使用技巧
两个位置函数的区别
- adapterPosition 在Adapter中绑定点击事件,注意处理 NO_POSITION 的case。
- layoutPosition 在layoutManager获取 用户看到的位置
RecyclerView 优化技巧
参考资料
【腾讯Bugly干货分享】https://zhuanlan.zhihu.com/p/23339185
以上是关于面试系列——ListView 和 RecyclerView 简要对比分析的主要内容,如果未能解决你的问题,请参考以下文章
如何在适配器外部的 ListView 和 GridView 中获取项目位置?