【问题标题】:Glide shows the old loaded images instead of the newGlide 显示旧加载的图像而不是新的
【发布时间】:2019-08-16 05:45:59
【问题描述】:

使用 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) {

                    }
                });
    }

我该如何解决这个问题?

【问题讨论】:

  • 尝试从 Glide 清除设备和网络的缓存
  • 我无法理解你的意思,你能更具体地描述一下吗?

标签: android android-recyclerview android-glide


【解决方案1】:

这就是 RecylerViews 的工作方式。他们得到回收。在加载新图像之前,旧图像会一直显示...一种解决方法可能是立即放置一个占位符图像,而新图像通过网络来。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,为了解决它,我使用了占位符。

    Glide.with(myViewHolder.context).load(myUri).placeholder(R.drawable.loading_image).into(myViewHolder.image);  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 2020-11-20
      • 2018-10-29
      相关资源
      最近更新 更多