Recycler:
????????Recycler的職責是管理那些已經廢棄了的或者從RecyclerView中分離的item view用于復用。Recycler典型的用法就是當LayoutManager去獲取Adapter中的某一項View的時候,如果這個View失效了,則需要重新綁定View,當復用的View是有效的話,View就會被直接被復用。有效的View如果不主動調用requestLayout,那么該View不需要重新測量就可以被復用。
Recycler幾個成員變量
RecycledViewPool:RecycledViewPool讓開發者可以在多個RecyclerView之間共享View。如果你想要跨RecyclerView復用View,創建一個RecycledViewPool實例,然后調用setRecycledViewPool(RecycledViewPool)方法就可以了。RecyclerView會自動創建一個RecycledViewPool的實例。有了RecycledViewPool的存在,就能很大程度上減少View的創建,提高性能。
mScrap是一個<viewType, List>的映射,mMaxScrap是一個<viewType, maxNum>的映射,我們可以調用setMaxRecycledViews方法來設置每種viewType的view容量。從源碼可以看出,如果viewType類型的list的size大于制定的最大數字的話,會先從列表的末尾開始丟棄超出的部分。調用getRecycledView(int viewType)方法呢,可以將scrapHeap中的最后一項移除并返回viewType對應的List的末尾項。這里需要注意的是,因為是跨RecyclerView進行操作,所以要特別注意對于同一個RecycledViewPool,對ViewType的定義要統一,因為這里是根據viewType來取ViewHolder的。?
ViewCacheExtension: