Android 循环器视图滚动时,Glide保留旧图像缓存引用

Android 循环器视图滚动时,Glide保留旧图像缓存引用,android,android-glide,Android,Android Glide,我有要在回收器视图中显示的图像列表。我正在使用Glide库加载图像。一切都很好,工作正常,除了一件让我作为开发人员的生活非常艰难的烦人的事情。当我向上/向下滚动“回收器”视图时,Glide会保留旧的位置参考,并在滚动停止后洗牌图像以设置实际位置。正在从cloudinary url和设备本地存储路径加载图像。我在下面发布我的代码。任何人对这个问题有任何线索或答案,请帮助我。提前谢谢 RequestOptions requestOptions = new RequestOptions()

我有要在回收器视图中显示的图像列表。我正在使用Glide库加载图像。一切都很好,工作正常,除了一件让我作为开发人员的生活非常艰难的烦人的事情。当我向上/向下滚动“回收器”视图时,Glide会保留旧的位置参考,并在滚动停止后洗牌图像以设置实际位置。正在从cloudinary url和设备本地存储路径加载图像。我在下面发布我的代码。任何人对这个问题有任何线索或答案,请帮助我。提前谢谢

RequestOptions requestOptions = new RequestOptions()
                .skipMemoryCache(false)
                .signature(new MediaStoreSignature("IMAGE",System.currentTimeMillis(),0))
                .diskCacheStrategy(DiskCacheStrategy.ALL)
                .override(100, 100)
                .placeholder(R.drawable.bg_round_corner_imageview)
                .error(R.drawable.bg_round_corner_imageview);

Glide.with(mContext)
       .setDefaultRequestOptions(new RequestOptions()
                                    .placeholder(R.mipmap.ic_launcher))
       .asBitmap()
       .load(urlProfileImage)
       .thumbnail(0.1f)
       .apply(requestOptions)                              
       .placeholder(R.drawable.bg_round_corner_imageview)                              
       .error(R.drawable.bg_round_corner_imageview))
       .into(new SimpleTarget<Bitmap>() {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable
            Transition<? super Bitmap> transition) {
                view.setImageBitmap(resource);                                       
                view.setBackground(mContext.getResources()                                                .getDrawable(R.drawable.bg_round_corner_imageview));
                view.setClipToOutline(true);
            }
       });
RequestOptions RequestOptions=newrequestoptions()
.skipMemoryCache(false)
.signature(新MediaStoreSignature(“IMAGE”,System.currentTimeMillis(),0))
.diskCacheStrategy(diskCacheStrategy.ALL)
.超控(100100)
.占位符(R.drawable.bg\u圆角\u图像视图)
.错误(R.drawable.bg\u圆角\u图像视图);
使用(mContext)滑动
.setDefaultRequestOptions(新的RequestOptions()
.占位符(R.mipmap.ic_启动器))
.asBitmap()
.load(urlProfileImage)
.缩略图(0.1f)
.apply(请求选项)
.占位符(R.drawable.bg\u圆角\u图像视图)
.错误(R.drawable.bg\u圆角\u图像视图))
.into(新的SimpleTarget(){
@凌驾
public void onResourceReady(@NonNull位图资源,@Nullable

转换基本上,这一行会导致在滚动回收器视图时显示两次的问题。您应该为指南正确选择缓存策略

而不是你应该使用

   .diskCacheStrategy(DiskCacheStrategy.NONE)
尝试覆盖适配器中的方法并设置默认/占位符图像

例如

@Override
public void onViewRecycled(ViewHolder holder) {
    super.onViewRecycled(holder);
    Glide.with(mContext).load(R.drawable.bg_round_corner_imageview).into(holder.imageview);
}

我想您已经为检查urlProfileImagenull设置了一些条件

如果为null,则不调用glide和setVisibility==False


如果不为空,则使用glide和setVisibility==TRUE加载图像。

不工作,以前已经尝试过。谢谢您的回复。@ranasaha如果需要,请告诉我help@ranasaha你按照我的建议检查了吗?是的,但还是一样,之前的图像被洗牌,然后在滚动时设置实际图像。你能显示你的完整图像吗onBindViewHolder方法中的代码?urlProfileImage只是一个存储cloudinary url的变量,我没有你提到过的任何条件。这是滑动缓存的问题,实际上我已经了解了多少。但是没有任何方法来解决它。谢谢你的回复。