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