RecyclerView 超過 2個 itemType 時, RecyclerView的 複用 回收問題
RecyclerView + 頂部Banner 多ItemType 組合很常見,如果 itemType 是2個,
或者2個以下,都不會有問題,
如果adapter中的ItemType超過兩個就會出現問題;
Rv的item複用機制第一層 setItemViewCacheSize中;
通過找源碼可以找到
默認的緩存itemType數量是兩個,意思就是 Rv緩存的不是單純的一個個item,
而是 itemType,然後再是item;
如果adapter中itemType超過默認的2個,
那麼滑動的時候,當itemType中所有的item滑出界面後,且有新的itemType創建時,
滑出界面的itemType中所有item,都會被回收;
當被回收的itemType中item重新顯示在界面上時,會重新觸發onCreateViewHolder;
如果在項目中 的首頁 需要用到Rv的itemType,且itemType多餘2個,那麼需要使用
//這裏設置多itemType時的緩存的itemType數量
recyclerView.setItemViewCacheSize(5);
來設置itemType的緩存數量;
想法如果錯誤,請留言告知