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…