1.缓存不同
a.ListView 是做的二级缓存,缓存的是View(ViewHolder需要自己去定义,如果不使用ViewHolder的话,每次getView的时候都会调用findViewById(int),这将导致ListView性能展示迟缓.
b.RecyclerView 做的是四级缓存,缓存的是Holder.默认缓存的数量是5个.(页面优化,也可以从设置缓存数量这块入手),所有的RecyclerView 共用一个缓存池.
// RecyclerView.RecycledViewPool viewPool=new RecyclerView.RecycledViewPool();
// viewPool.setMaxRecycledViews(1,8);
// recyclerView.setRecycledViewPool(viewPool);
2.LayoutManager
a.ListView 只支持垂直布局
b.RecyclerView,支持三种类型的布局,垂直,瀑布流,横向
3.ItemAnimator
相对于ListView, RecyclerView的ItemAnimator提供了添加,移除,移动item时候的处理动画效果,如果不想自定义动画,可以采用DefaultItemAnimator 他默认的动画来实现.
4.ItemDecoration
a,ListView 在xml中可以设置分隔符
b.RecyclerView 默认情况下并不在Item之间展示分割线.不过可以应用官方的DividerItemDecoration.java来实现
5.RecyclerView 增加了条目手势处理OnItemTouchListener 监听,拦截触摸事件更多的控制权限;而ListView 只有OnItemClickListener 点击事件