和listview区别
-
Recycleview布局效果更多
,增加了纵向,表格,瀑布流等效果 -
Recycleview去掉了一些api
,比如setEmptyview,onItemClickListener等等,给到用户更多的自定义可能 -
Recycleview去掉了设置头部底部item的功能
,专向通过viewholder的不同type实现 -
Recycleview实现了一些局部刷新
,比如notifyitemchanged -
Recycleview自带了一些布局变化的动画效果
,也可以通过自定义ItemAnimator类实现自定义动画效果 -
Recycleview缓存机制更全面
,增加两级缓存,还支持自定义缓存逻辑
Recycleview有几级缓存,缓存过程?
Recycleview有四级缓存,分别是mAttachedScrap(屏幕内),mCacheViews(屏幕外),mViewCacheExtension(自定义缓存),mRecyclerPool(缓存池)
-
mAttachedScrap(屏幕内)
,用于屏幕内itemview快速重用,不需要重新createView和bindView -
mCacheViews(屏幕外)
,保存最近移出屏幕的ViewHolder,包含数据和position信息,复用时必须是相同位置的ViewHolder才能复用,应用场景在那些需要来回滑动的列表中,当往回滑动时,能直接复用ViewHolder数据,不需要重新bindView。 -
mViewCacheExtension(自定义缓存)
,不直接使用,需要用户自定义实现,默认不实现。 -
mRecyclerPool(缓存池)
,当cacheView满了后或者adapter被更换,将cacheView中移出的ViewHolder放到Pool中,放之前会把ViewHolder数据清除掉&