Recycler:
????????Recycler的職責是管理那些已經(jīng)廢棄了的或者從RecyclerView中分離的item view用于復用。Recycler典型的用法就是當LayoutManager去獲取Adapter中的某一項View的時候,如果這個View失效了计贰,則需要重新綁定View痹束,當復用的View是有效的話秀菱,View就會被直接被復用基显。有效的View如果不主動調(diào)用requestLayout挑随,那么該View不需要重新測量就可以被復用分歇。
Recycler幾個成員變量
RecycledViewPool:RecycledViewPool讓開發(fā)者可以在多個RecyclerView之間共享View傀蓉。如果你想要跨RecyclerView復用View,創(chuàng)建一個RecycledViewPool實例职抡,然后調(diào)用setRecycledViewPool(RecycledViewPool)方法就可以了葬燎。RecyclerView會自動創(chuàng)建一個RecycledViewPool的實例。有了RecycledViewPool的存在缚甩,就能很大程度上減少View的創(chuàng)建谱净,提高性能。
mScrap是一個<viewType, List>的映射擅威,mMaxScrap是一個<viewType, maxNum>的映射壕探,我們可以調(diào)用setMaxRecycledViews方法來設(shè)置每種viewType的view容量。從源碼可以看出郊丛,如果viewType類型的list的size大于制定的最大數(shù)字的話李请,會先從列表的末尾開始丟棄超出的部分瞧筛。調(diào)用getRecycledView(int viewType)方法呢,可以將scrapHeap中的最后一項移除并返回viewType對應(yīng)的List的末尾項捻艳。這里需要注意的是驾窟,因為是跨RecyclerView進行操作,所以要特別注意對于同一個RecycledViewPool认轨,對ViewType的定義要統(tǒng)一绅络,因為這里是根據(jù)viewType來取ViewHolder的。?
ViewCacheExtension: