簡體   English   中英

使用通用圖像加載器時,listview在notifyDataSetChanged()上閃爍

[英]Listview flickering on notifyDataSetChanged() when using universal image loader

我正面臨以下鏈接中提到的同一問題:

https://github.com/nostra13/Android-Universal-Image-Loader/issues/376

我已經檢查了上面鏈接中的解決方案,似乎下面給出的解決方案正在解決問題:

ImageAware imageAware = new ImageViewAware(imageView, false);
imageLoader.displayImage(imageUri, imageAware);

但是,如果我在上面的代碼中將選項傳遞給displayImage ()方法,則會發生同樣的閃爍問題。 這意味着,以下代碼引起了問題:

ImageAware imageAware = new ImageViewAware(imageView, false);
imageLoader.displayImage(imageUri, imageAware,options);

當我將“選項”傳遞給displayImage()方法時,如何停止閃爍的問題?

這是我傳遞給該方法的選項:

options = new DisplayImageOptions.Builder().showImageForEmptyUri(R.drawable.empty).showImageOnLoading(R.drawable,loading).showImageOnFail(R.drawable.failed).cacheOnDisc(true).bitmapConfig(Bitmap.Config.RGB_565).imageScaleType(ImageScaleType.IN_SAMPLE_INT).build();

解決方案是在圖像不變時不重新加載圖像。

在適配器的getView()中執行以下操作:

// schedule rendering:
final String path = ... (set path here);
if (holder.lastImageUrl == null || !holder.lastImageUrl.equals(path)
                || holder.headerImageView.getDrawable() == null) {
    // refresh image
    imageLoader.displayImage(imageUri, imageAware);
} else {
    // do nothing, image did not change and does not need to be updated
}

如果成功(添加ImageLoadingListener),則將holder.lastImageUrl = path設置;如果失敗,然后取消,則將holder.lastImageUrl設置為null,以便下次重新加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM