2014-10-31 55 views
0

最近我遇到了一個奇怪的問題,當我使用名爲Universal-Image-Loader的github庫時。每個listview項目最多有三個imageview.when滾動listview顯示圖像,listview是如此不流暢。我閱讀源代碼,我發現它從後臺線程加載位圖,然後使用處理程序將位圖發佈到UI線程。所以我想知道是否因爲我加載了許多位圖和文章很多消息給ui線程,那麼它會導致listview不流利。Android listview滾動不平滑,當我加載很多位圖時

List<String> babySnapImgUrls = shopBean.babySnapImgUrls; 
if (babySnapImgUrls != null) { 
    int size = Math.min(babySnapImgUrls.size(), 3); 
    for (int i = 0; i < size; i++) { 
     final ImageView snapView = mViewHolder.snapViews[i]; 
     if(snapView.getVisibility() != View.VISIBLE) 
      snapView.setVisibility(View.VISIBLE); 
     //snapView.setImageDrawable(null); //    Object url = mViewHolder.snapImageViewAwares[i].getWrappedView().getTag(); //  String urlStr = ""; //    if(url != null){ //    urlStr = url.toString(); //    } 
     //if(!babySnapImgUrls.get(i).equals(urlStr)) { 
      mViewHolder.snapImageViewAwares[i].getWrappedView().setTag(babySnapImgUrls.get(i)); 
      // Log.e("koudai",ImageLoader.getInstance().) 
      displayImage(babySnapImgUrls.get(i), mViewHolder.snapImageViewAwares[i], 
        KoudaiDisplayImageOptions.DEFAULT_DISPLAY_IMAGE_OPTIONS); 
     //} 
    } 
    for (int i = size; i < 3; i++) { 
     if(mViewHolder.snapViews[i].getVisibility() != View.INVISIBLE) 
      mViewHolder.snapViews[i].setVisibility(View.INVISIBLE); 
     ImageLoader.getInstance().cancelDisplayTask(mViewHolder.snapImageViewAwares[i]); 
    } 
} 
+0

你應該在這裏發佈一些代碼,可能是你的適配器的代碼。 – 2014-10-31 02:32:07

+0

我有我的適配器的一些代碼,但我不做其他的事情,除了我叫從庫裏來的方法。 – 2014-10-31 02:42:48

+0

你是否回收了適配器中的視圖? – 2014-10-31 02:45:54

回答

0

在ListView中加載位圖需要正確的方法。我遇到了同樣的問題,我發現這個documentation有點幫助。

如果沒有最佳實踐可行,那麼處理滾動滯後的最後手段就是減小位圖的大小(或質量)。我正在使用Picasso加載和調整圖像大小。之後,我終於順利滾動了。