如何使用滑动库在recyclerview中加载更新的图像而不是旧图像

时间:2018-01-26 11:28:33

标签: android android-imageview android-glide

我已经实现了Glide库来在ImageView中加载图像,它工作正常。

相关性:

compile "com.github.bumptech.glide:glide:4.5.0"
annotationProcessor "com.github.bumptech.glide:compiler:4.5.0"
compile "jp.co.cyberagent.android.gpuimage:gpuimage-library:1.3.0"

在适配器中:

                    Glide.with(context)
                    .load(ImageUrl)
                    .apply(bitmapTransform(new jp.wasabeef.glide.transformations.BlurTransformation(25)
                    ).diskCacheStrategy(DiskCacheStrategy.ALL))
                    .apply(new RequestOptions()
                            .placeholder(R.mipmap.ic_launcher))
                    .into(view);

问题是,当我上传图片并在recyclerview中显示并从API获取网址时,它会显示先前从缓存中添加的图片而不是新图片。我只需要在第一个位置添加新图像而不是刷新整个列表。

使用此功能:

.diskCacheStrategy(DiskCacheStrategy.NONE)
.skipMemoryCache(true)

上面的代码刷新整个列表,因为清除整个缓存数据。我只需要在列表中显示新上传的图像。

2 个答案:

答案 0 :(得分:2)

请设置如下: -

Glide.with(context)
        .load(img_url)
        .apply(new RequestOptions()
        .placeholder(R.mipmap.personal_pic)
        .diskCacheStrategy(DiskCacheStrategy.ALL))
        .into(iv_profile_pic);

答案 1 :(得分:1)

您需要验证的第一件事是服务器/ cdn的响应标头或您托管图像的任何内容。

Glide知道您的图像(来自同一网址)是否更新的唯一方法是通过缓存/ ETAG标头。

现在棘手的部分:Glide是一个图像缓存/加载库,它处理内存/光盘缓存但不执行实际的网络部分。它由第三方库(如OkHttp)处理,因此您需要扩展滑动模块和/或配置网络库,以便以适合您应用的方式尊重缓存标头。

以下是glide github问题的链接,它们将指向正确的方向:

https://github.com/bumptech/glide/issues/1257

https://github.com/bumptech/glide/issues/1847

https://github.com/bumptech/glide/issues/463