1. 程式人生 > >專案實訓(七)【巨坑】recyclerview在介面卡更新後佈局混亂

專案實訓(七)【巨坑】recyclerview在介面卡更新後佈局混亂

先描述一下我遇到的問題:

一個帖子列表,帖子佈局中有一個顯示圖片的佈局,一張兩張三張圖片的顯示效果不同,所以對應著有三個不同的佈局,初始都是gone。根據解析資料解析出的圖片數選擇顯示那個佈局。

列表有底部載入,到達底部獲取資料新增到陣列中,然後呼叫介面卡的notify…方法之後,神奇的事情發生了。底部載入更多前的帖子,都顯示了同一張圖片。

也就是說,列表項的重新渲染出錯了。

剛開始我想,是不是我解析資料的邏輯太複雜了,所以列表項的併發處理出現了混亂。於是我監聽了onBindViewHolder這個核心方法,在列表項出現在可見區域時,會呼叫這個方法,通過列印我發現,方法的呼叫過程完全正確。。。。。

這就奇怪了,介面卡拿到xml對應的初始佈局,然後根據方法對這個佈局進行設定,整個過程沒有問題,怎麼顯示出來就不一樣呢?

問題就在於,onBindViewHolder處理的初始佈局,並不是xml對應的佈局,而是上一個列表項的佈局。換言之,我在xml中設定的佈局A是gone,列表項1設定A為可見,然後1後面的列表項2如果不進行設定,那麼A也會是可見。

所以解決方法也很明顯了,就是在onBindViewHolder中對佈局中沒有設定的內容進行初始化設定就可以顯示出想要的效果了。