RecyclerView設定快取大小
阿新 • • 發佈:2019-01-13
前兩天遇到問題,RecyclerView使用GridView佈局,滑出介面兩行再劃回來,只有第一行只有前兩個grid位置的控制元件還保留原來功能,後面的都失活了,覺得是控制元件的問題,然後最終解決,以下是幫助了我的文章,收藏!有時間詳細學習!
1
熟悉RecyclerView 快取的同學應該知道(後面在也會介紹RecyclerView快取機制),當RecyclerView中的itemView 滑出屏幕後會快取在mCacheView 中(預設快取最大數是2),因此當滑出螢幕超過2後,再滑回來,原來的位置資訊都會被重置。
2
滑動場景中的複用會用到這裡的機制。mCachedViews 的大小預設為2。遍歷 mCachedViews,找到 position 一致的 ViewHolder,之前說過,mCachedViews 裡存放的 ViewHolder 的資料資訊都儲存著,所以 mCachedViews 可以理解成,只有原來的卡位可以重新複用這個 ViewHolder,新位置的卡位無法從 mCachedViews 裡拿 ViewHolder出來用。
RecyclerView回收和複用機制分析(這篇講的非常好,完美的解決了我的困惑)
3
你可以呼叫
recyclerView.setItemViewCacheSize(int);
這個 api,去調整 RecyclerView 的複用邏輯和方式來解決 onBindViewHolder 沒有呼叫的這個問題。
其他: