2016-03-03 34 views
2

我有自定義列表視圖。在listview中包含200個項目。當我從上到下快速滾動或從底部到頂部列表視圖顯示錯誤的圖像。如果我滾動緩慢,那麼它的工作很好。壁畫:快速滾動時顯示錯誤圖像的列表視圖

SimpleDraweeView在XML:

<com.facebook.drawee.view.SimpleDraweeView 
      android:id="@+id/fake_image_list_group" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/note_list_item_height" 
      android:background="@android:color/transparent" 
      android:contentDescription="@string/app_name" /> 

設置圖像URI到SimpleDraweeView:

GenericDraweeHierarchy hierarchy = setHierarchyForDraweeView(mImageView, 300); 
    hierarchy.setPlaceholderImage(new AsyncColorDrawable(context.getResources())); 
    hierarchy.setFailureImage(mContext.getResources().getDrawable(R.drawable.broken_image_black)); 
    ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.fromFile(new File(mPath/*local path*/))) 
      .setResizeOptions(new ResizeOptions(width, height)) 
      .setLocalThumbnailPreviewsEnabled(true) 
      .build(); 
    DraweeController draweeController = Fresco.newDraweeControllerBuilder() 
      .setImageRequest(imageRequest) 
      .setOldController(mImageView.getController()) 
      .setAutoPlayAnimations(false) 
      .build(); 
    mImageView.setController(draweeController); 

SetHierarchyForDraweeView功能:

private GenericDraweeHierarchy setHierarchyForDraweeView(SimpleDraweeView draweeView, int duration) { 
    if (draweeView != null) { 
     if (draweeView.getHierarchy() == null) { 
      GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder(mContext.getResources()); 
      GenericDraweeHierarchy hierarchy = builder 
        .setFadeDuration(duration) 
        .setPlaceholderImage(new AsyncColorDrawable(mContext.getResources())) 
        .setFailureImage(mContext.getResources().getDrawable(R.drawable.broken_image_black)) 
        .build(); 
      draweeView.setHierarchy(hierarchy); 
     } else { 
      GenericDraweeHierarchy hierarchy = draweeView.getHierarchy(); 
      hierarchy.setFadeDuration(duration); 
      return hierarchy; 
     } 
    } 
    return null; 
} 

AsyncColorDrawable類:

private class AsyncColorDrawable extends ColorDrawable { 
    public AsyncColorDrawable(Resources res) { 
     super(res.getColor(R.color.application_container_background_color)); 
    } 
} 

如果我沒有做錯任何事,請看着辦吧。感謝您的提前。

回答

-1

爲此,您需要使用通用圖像加載器。這是一個智能而強大的圖書館,有助於在Android上加載,緩存和顯示圖像。看看this

+0

現在我正在使用壁畫庫。如果我正在使用其他庫,它的工作正常。爲什麼它發生在這個圖書館? – Karun

相關問題