面试系列——ListView 和 RecyclerView 简要对比分析

Posted BridgeGeorge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试系列——ListView 和 RecyclerView 简要对比分析相关的知识,希望对你有一定的参考价值。

使用上

ListView

  1. 继承重写BaseAdapter类;
  2. 自定义ViewHolder与convertView的优化;
  3. 默认不支持单个View 刷新

RecyclerView

  1. 继承重写RecyclerView.Adapter与RecyclerView.ViewHolder
  2. 设置LayoutManager,以及layout的布局效果
  3. 支持局部刷新和动画

缓存

ListView

二级缓存 :屏幕内View 屏幕外View

RecyclerView

四级缓存 :屏幕内View 屏幕外View

ViewCacheExtension(用户自定义)

继承ViewCacheExtension实现
列表有固定的数量条目和宽高,这样子,列表初始化的时候就能直接从这级缓存拿到ViewHolder,不需要再创建ViewHolder,大大节省时间,提高效率,需要自己去管理释放缓存。

RecyclerPool (用户自定义)

多个RecycleView可共享,可用于多个RecyclerView的优化
ViewPager 多个页面 有同样的RecyclerView item 可以设置 一个 RecyclerPool。

选取策略

  1. 性能上: RecyclerView 并不比ListView 有明显的性能优势。
  2. 功能上: RecyclerView 适用于灵活布局时,新组件开发优先选取RecyclerView 。

附录

RecyclerView 使用技巧

两个位置函数的区别

  • adapterPosition 在Adapter中绑定点击事件,注意处理 NO_POSITION 的case。
  • layoutPosition 在layoutManager获取 用户看到的位置

RecyclerView 优化技巧

https://github.com/Blankj/AndroidOfferKiller/blob/master/android/RecyclerView%20%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96.md

参考资料

【腾讯Bugly干货分享】https://zhuanlan.zhihu.com/p/23339185

以上是关于面试系列——ListView 和 RecyclerView 简要对比分析的主要内容,如果未能解决你的问题,请参考以下文章

listview优化

如何在适配器外部的 ListView 和 GridView 中获取项目位置?

ListView之checkbox错位问题解决

将 ListView 中的位置传递给子 RecyclerView 适配器

Android ListView 相关问题(面试常用)

浅谈android中的ListView合集系列之解决ScrollView和ListView嵌套冲突