使用 Glide ,我可以从URL加载图像,下面的代码可以正常工作,我唯一的问题是当我更快地滚动RecylerView
时,我会再次看到旧的加载的图像原始图像的图像,在1或2秒后(取决于互联网连接),一切都会恢复正常
当我打开应用程序时(滚动前):
当我(水平)滚动时,看到的是相同的加载图像,但是1或2秒钟后图像变为正常状态:
void onBindView(int position) {
imgframe.setImageBitmap(null);
final String s = spacecrafts.get(position);
Glide.with(c).asBitmap().load(s).apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
img.setPadding(0, 0, 0, 0);
img.setImageBitmap(bitmap);
img.setScaleType(ImageView.ScaleType.CENTER_CROP);
imgframe.setImageBitmap(resource);
progress.setVisibility(View.GONE);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
}
如何解决此问题?
答案 0 :(得分:0)
这就是RecylerViews工作的方式。他们被回收。在加载新图像之前,旧图像一直显示...一种解决方法是立即放置一个占位符图像,而新图像通过网络传输。
答案 1 :(得分:0)
我遇到了同样的问题,要使用占位符修复它。
Glide.with(myViewHolder.context).load(myUri).placeholder(R.drawable.loading_image).into(myViewHolder.image);