ListView 和 RecyclerView 简要对比分析

320 阅读1分钟

使用上

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 优化技巧

github.com/Blankj/Andr…

参考资料

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