recyclerview layoutmanager adapter,viewholder,itemdecoration這些和recycleview使用息息相關的類到底是什麼關係
itemdecoration這些和recycleview使用息息相關的類到底是什麼關係
onmeasure
onlayout
sminwidthfield = view.class.getdeclaredfield("mminwidth");
choosesize
setmeasureddimension
countone viewholder adapter,viewholder,itemdecoration這些和recycleview使用息息相關的類到底是什麼關係
adapterdataobserver
dispatchlayoutstep2 getviewforposition
createviewholder
onlayout
1.recyclerview是將繪製流程交給layoutmanager處理,如果沒有設定不會測量子view。
2.繪製流程是區分正向繪製和倒置繪製。
3.繪製是先確定錨點,然後向上繪製,向下繪製,fill()至少會執行兩次,
如果繪製完還有剩餘空間,則會再執行一次fill()方法。
4.layoutmanager獲得view是從recyclerview中的recycler.next()方法獲得,
涉及到recyclerview的快取策略,如果快取沒有拿到,則走我們自己重寫的oncreateview方法。
5.如果recyclerview寬高沒有寫死,onmeasure就會執行完子view的measure和layout方法,
onlayout僅僅是重置一些引數,如果寫死,子view的measure和layout會延後到onlayout中執行。
recycledviewpool createviewholder
mattachedscrap 0-9,9-0 mcacheviews viewcacheextension recycledviewpool
mcacheviews recyclerinstance
recycle removeviewat scrapviews detachviewat scrapview viewholder
recyclecachedviewat addviewholdertorecycledviewpool
madapter.bindviewholder(holder, offsetposition);
onbindviewholder
oncreateviewholder
recycledviewpool復用imageviewholder
notifyitemremoved
1.cacheviews中的快取只能position相同才能復用,並且不會重新bind.
2.cacheviews滿了後會移除到recyclerpool中,並重置viewholder.
3.recyclerpool中的快取復用需要重新bind.
《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具
檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...
Cartographer原始碼篇 原始碼分析 1
在安裝編譯cartographer 1.0.0的時候,我們可以看到 主要包括cartorgarpher ros cartographer ceres sover三個部分。其中,ceres solver用於非線性優化,求解最小二乘問題 cartographer ros為ros平台的封裝,獲取感測器資料...
python原始碼剖析 Python原始碼剖析
第頁共 頁python 原始碼剖析 物件機制 1.物件 在python 的世界中,一切都是物件,乙個整數是乙個物件,乙個字串也是 乙個物件,更為奇妙的是,型別也是乙個物件,整數型別是乙個物件,字串類 型也是乙個物件。從 年guido 在那個聖誕節揭開 python 世界的大幕開始,一直到現在,pyt...