RecyclerView + banner 滑動時 banner重置的問題

RecyclerView 超過 2個 itemType 時, RecyclerView的 複用 回收問題

RecyclerView + 頂部Banner 多ItemType 組合很常見,如果 itemType 是2個,
或者2個以下,都不會有問題,
如果adapter中的ItemType超過兩個就會出現問題;

Rv的item複用機制第一層  setItemViewCacheSize中;
通過找源碼可以找到
3066171-42867037d6792ff7.png
image.png
3066171-2763362924aa9b3f.png
image.png
3066171-a8e306e95c21e9cd.png
image.png
3066171-325f73b1ea55fa36.png
image.png
3066171-bdcaa9f03dbb88fb.png
image.png
默認的緩存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的緩存數量;

想法如果錯誤,請留言告知
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章