天天看點

Glide加載圖檔的小坑

場景描述:

Recyclerview中加載圖檔, 但是有一部分圖檔伺服器上面沒有, 這時候快速滑動RecyclerView的時候, 如果正好上一次圖檔是拿不到的情況, 過後才傳回error, 這時候error就會覆寫目前的圖檔, 導緻錯亂。具體代碼如下:

if (imageResourceID == -1) {
    Glide.with(activity)
                        .load(imageUrl)
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .error(R.drawable.icon_load_error_pow_coin)
                        .into(imageView);
} else {
     coinImageIcon.setImageResource(imageResourceID);
}
           

先在程式中查找了一下有沒有需要展示的圖檔, 沒有的話再去網絡加載, 這時候就很容易發生上述的問題了。

解決方式如下, 其實就是把else裡面替換成:

Glide.with(activity)
                        .load(resourceId)
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .error(R.drawable.icon_load_error_pow_coin)
                        .into(imageView);
           

猜想可能是Glide裡面做了setTag()處理吧...  , 希望大牛能給解答下為啥...