1. 程式人生 > >ListView和RecyclerView

ListView和RecyclerView

ListView和RecyclerView

ListView

ListView優化

  1. 當你建立了大量的物件的時候,GC就會頻繁的執行。所以在getView()方法中不要建立非常多的物件。最好是,不要在ViewHolder以外建立不論什麼物件。

  2. 手動關閉scrollingCache和animateCache。
    scrollingCache本質上是drawing cache,能夠讓一個View將他自己的drawing儲存在cache中(儲存為一個bitmap),這樣下次再顯示View的時候就不用重畫了,而是從cache中取出。該設定會使頁面的展示更為平滑,但同時更加消耗記憶體,使頁面變得卡頓。預設情況下drawing cahce是禁用的。而在ListView中,scrollingCache是預設開啟的,我們能夠手動將它關閉。同時ListView也預設開animateCache會消耗大量的記憶體,頻繁呼叫GC,我們可以手動將它關閉。

ListView圖片錯位問題

ListView載入圖片錯位的原因是“View複用+非同步載入圖片”。
正在被複用的View,先載入了上一次未載入完的圖片,再載入當前Item應該載入的圖片,會出現閃動效果。
正在被複用的View,先載入了此條Item應該載入的圖片,又載入了上一次未載入完的圖片,會導致圖片顯示錯誤的現象。

解決方案:
在getView重新整理資料的時候給View設定圖片url的tag,非同步載入圖片完成後去取tag,判斷非同步載入下來的圖片url是不是tag中的的url。如果是則展示圖片,不是則不展示此圖片。