Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android listview異步加載圖片錯位,重復,閃爍分析以及解決方案

android listview異步加載圖片錯位,重復,閃爍分析以及解決方案

編輯:關於Android編程

我們在使用listview異步加載圖片 的時候,在快速滑動或者網絡不好的情況下,會出現圖片錯位,重復,閃爍等問題,其實這些問題總結起來就是一個問題,

比如listview上有100個item,一屏只顯示10個item,我們知道getView()中converView是用來復用view對象的,因為一個item的view對象,而imageview控件就是view通過findViewById()獲得的,而我們在復用view對象時,也就是說這個imageview也被復用了,比如第11個item的view復用了第一個itemv iew對象,那麼imageview就同時被復用了,而顯示圖片是通過imageview控件,所以當圖片沒下載出來,就這個imageview顯示的數據就是復用的數據

1:item圖片顯示重復?

這個顯示重復是指當前行item顯示了之前某行item的圖片

比如ListView滑動到第2行會異步加載某個圖片,但是加載很慢,加載過程中listView已經滑動到了第14行,且滑動過程中該圖片加載結束,
第2行已不在屏幕內,根據上面介紹的緩存原理,第2行的view可能被第14行復用,這樣我們看到的就是第14行顯示了本該屬於第2行的圖片,造成顯示重復


行item圖片顯示錯亂?
這個顯示錯亂是指某行item顯示了不屬於該行item的圖片。?
比如ListView滑動到第2行會異步加載某個圖片,但是加載很慢,加載過程中listView已經滑動到了第14行,第2行已不在屏幕內,
根據上面介紹的緩存原理,第2行的view可能被第14行復用,第14行顯示了第2行的View,這時之前的圖片加載結束,就會顯示在第14行,造成錯亂


行item圖片顯示閃爍?
上面b的情況,第14行圖片又很快加載結束,所以我們看到第14行先顯示了第2行的圖片,立馬又顯示了自己的圖片進行覆蓋造成閃爍錯亂


解決方案:

通過上面的分析我們知道了出現錯亂的原因是異步加載及對象被復用造成的,如果每次

getView

能給對象一個標識,

在異步加載完成時比較標識與當前行

item

的標識是否一致,

致則顯示,否則不做處理即可

通過上面的分析我們知道了出現錯亂的原因是異步加載及對象被復用造成的,如果每次

getView

能給對象一個標識,

在異步加載完成時比較標識與當前行

item

的標識是否一致,

致則顯示,否則不做處理即可

通過上面的分析我們知道了出現錯亂的原因是異步加載及對象被復用造成的,如果每次getView能給對象一個標識,在異步加載完成時比較標識與當前行item的標識是否一致,一致則顯示,否則不做處理即可


原理:首先給imageview設置一個tag,這個tag中設置的是url,然後在加載的時候取得這個url和要加載那position中的url對比,如果不相同就加載,相同就是復用以前的就不加載了

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved