Android-ListView和RecylerView的区别,以及如何优化

265 阅读1分钟

1.缓存不同

ListView是2级缓存,RecyclerView比ListView多两级缓存,支持多个ItemView缓存,
支持开发者自定义缓存处理逻辑,支持所有RecyclerView共用同一个
RecyclerViewPool(缓存池)。

2.adapter不同

ListView有自带的Adapter,而RecylerView所有的adapter必须由自己实现。

3.布局不同

ListView布局较为单一,只有纵向布局,RecylerView横向、纵向、表格、瀑布流都可以实现

4.刷新区别

 ListView中通常使用全局刷新函数notifyDataSetChanged()来刷新ListView中
 的所有数据,这是一个非常耗费资源的行为,RecyclerView则可以实现数据的局部
 刷新,例如notifyItemChanged()函数等
 
 

5.动画区别

在RecyclerView封装的类中已经自带了很多内置的动画API,而ListView则需要自己实现

6.item点击事件

ListView提供了setOnItemClickListener()这样的item点击事件,而RecylerView没有,需要自己实现。

ListView的优化

  • convertView的复用,进行布局的复用。
  • ViewHolder的使用,避免每次都findviewById。
  • 使用分段加载。
  • 使用分页加载。

RecyclerView的优化

  • 数据处理与视图绑定分离
  • 数据优化
  • 布局优化
  • 减少xml文件inflate时间
  • 减少View对象的创建
  • 设置高度固定
  • 共用RecycledViewPool
  • RecyclerView数据预取
  • 加大RecyclerView的缓存
  • 增加RecyclerView预留的额外空间
  • 减少ItemView监听器的创建
  • 优化滑动操作
  • 刷新闪烁
  • 回收资源 参考:www.jianshu.com/p/1853ff1e8…