IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{2064e5c6 position=2 id=-1, oldPos=2, pLpos:-1

很明顯是數(shù)組越界問題

問題產(chǎn)生的根本原因就是數(shù)據(jù)集合不對(duì)應(yīng)

數(shù)據(jù)集合不對(duì)應(yīng)的原因在于使用頁面下載了新的數(shù)據(jù)集,并且傳遞到了adapter里面,但是adapter里面緩存的position信息是前一個(gè)數(shù)據(jù)集的,而數(shù)據(jù)集卻更新了,因?yàn)閿?shù)據(jù)集的差異導(dǎo)致了與holder保存的東西不一致從而崩潰


圖中第二個(gè)方法是正確的

從這兩個(gè)方法的對(duì)比中很清楚的可以看到,是由于更新了數(shù)據(jù)集合而沒有更新緩存的item導(dǎo)致的。

說到這,其實(shí)翻一下adapter的眾多方法你會(huì)發(fā)現(xiàn)解決的辦法有許多,這是其中一種:


下載完數(shù)據(jù)之后使用


使用的更新方法

goodlist是新下載的數(shù)據(jù)集,使用notifydatasetchange()的話我的也會(huì)有錯(cuò),還使得刷新的特效沒有了,使用這個(gè)方法不會(huì)有錯(cuò)還保留了特效效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容