在覆盖图像时,RecyclerView或Glide不会更新图像

问题描述 投票:0回答:1

我在从onBindViewHolder()扩展的适配器中使用了RecyclerView.Adapter方法中的Glide,如下所示:

Glide.with(context)
    .load(imagePath)
    .override(500, 500)
    .crossFade()
    .diskCacheStrategy(DiskCacheStrategy.RESULT)
    .into(((MyItemHolder) holder).imageView);

然后,我在其中一个作为数据提供给适配器的图像中裁剪。裁剪图像后,我覆盖图像文件,即我用相同的文件名保存编辑的图像。所以imagePath保持不变,而图像却发生了变化。但是,即使使用单独的notifyDataSetChanged()调用,此更改也未反映在RecyclerView中。如果我使用不同的文件名保存编辑的图像,则会反映出更改。

有没有办法在保持文件名相同的同时实现图像内容变化的检测?

android android-recyclerview recycler-adapter android-glide
1个回答
2
投票

发生这种情况的原因是因为Glide正在缓存图像,并且路径相同,因此它无法了解更改。为此,您需要更改缓存策略并跳过内存缓存,如下所示:

Glide.with(context)
    .load(imagePath)
    .override(500, 500)
    .crossFade()
    .diskCacheStrategy(DiskCacheStrategy.NONE)
    .skipMemoryCache(true)
    .into(((MyItemHolder) holder).imageView);

现在图像不会被缓存,图像将会更新。

© www.soinside.com 2019 - 2024. All rights reserved.