ListView緩存機制踩過的坑


ListView,GrildView使用時候經常會用到緩存機制,隨意一搜,例子成千上萬,但是講解都是很一致,跟自己踩的坑很少有人講解到。

測試 需求: GrildView 分三列顯示,默認背景為白色,如果當前ID能被2整除 就顯示一張圖片,如果能被三整除並且不能被2整除 背景變成灰色。

getView代碼:

運行顯示:第一張圖未進行滑動之前顯示正常,然后隨意滑動回來顯示第二張圖,呵呵,那么問題來了,圖片順序錯亂了,但是為什么名字沒錯亂呢,呵呵,這一切都是緩存沒有用好惹的貨。

回過頭再進行分析getView中的代碼,我們知道,緩存會記錄當前界面的View的狀態,那么,滑動回來,之所以文字沒有錯亂是因為每次都是重新賦值的,但是我們的view確是有條件的判斷賦值的,也就是說 沒有重新賦值,會在上一個界面的緩存狀態中在進行判斷,就造成了 灰色背景上會出現圖片這一錯亂問題,解決方法就是,106-109行的代碼注釋掉,取消注釋,每次過來一屏都重新給view賦值,就不會出現順序錯亂了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM