- 结构不同
1. ListView的结构是 View 与 Adapter
2. RecyclerView 除 View 和 Adapter 外还有 LayoutManager(负责测量和摆放,onMeasure,onLayout) - 复用机制不同
1. ListView (复用)的是 View(View的数组)
2. RecyclerView (复用)的是 ViewHolder (ViewHolder的集合)
3. 实现多 Item 方式上,ListView 内部是个 View 数组,所以要求 itemType必须是有序的。RecyclerView 内部是个List,随便填
4. RecyclerView 内部还有一个缓存池(RecyclerViewPool) - 缓存机制不同
1. ListView 缓存是父类AbsListView里的一个RecyclerBin管理,两级缓存
2. RecyclerView 缓存是一个Recycler类,缓存的是ViewHolder - RecyclerView 图解运行机制

- 为什么会有RecyclerView?
1. 因为ListView实现动画比较困难。不能局部刷新(尤其在做动画情况下 )
2. ListView不能局部刷新,性能问题 - ListView的缓存机制
1. 二级缓存是指:ReyclerBin里的成员变量:mActiveViews的View数组和mScrapView的List数组
- RecyclerView的缓存机制
1. 内部类里的Recycler类
2. mCachedViews主要优化滑动时候的性能,默认两个,有对应的set方法设置数量

2. mCachedViews超过两个(默认两个)后,会存进Pool里
可以支持设置同一个回收池,可以增加pool里的内部数量(默认五个)。当调用全刷新方法的时候pool里的List默认是五个,所以不够用了,建议使用局部刷新。常规情况下:notifyDataSetChanged()方法会刷新全部 Item 。但是这种业务实际几乎是没有的,往往刷新的是几个或者一个。
