滑动Recyclerview时每次都需要使用Glide加载图片

14

我有一个 RecyclerView,每个 RecyclerView 子项都有一个 ImageView。 我使用Glide在那个 ImageView 中加载图像,当我向下滚动 RecyclerView 时它会加载图像,这很好,但是当我再次向上滚动 RecyclerView 时,它会重新加载已经加载过的图像。 我不想重新加载已经加载过的图片。

我正在使用以下代码使用 Glide 加载图片

Glide.with(mActivity)
                .load(img.getmGridViewImageUrl())
                .into(imageHolder.imageView);

回收视图的代码 - Vivek Mishra
你好,你找到这个问题的解决方案了吗? - vamsidhar muthireddy
3个回答

10

您可以将图片缓存到磁盘或内存中。

Glide 默认会将图片缓存在内存中。

此外,值得注意的是 Glide 默认会将所有图像资源放入内存缓存中。因此,不需要使用 .skipMemoryCache(false) 进行特定调用。

如果您想启用磁盘缓存,可以使用以下方法之一:

  1. DiskCacheStrategy.SOURCE 仅缓存原始全分辨率图像。
  2. DiskCacheStrategy.RESULT 仅缓存最终图像,在降低分辨率(和可能的转换)后。
  3. DiskCacheStrategy.ALL 缓存图像的所有版本(默认行为)。

用法:

Glide  
    .with( context )
    .load( url )
    .diskCacheStrategy( DiskCacheStrategy.ALL )
    .into( imageViewInternet );

0

你不能直接使用这个方法,按照以下方式操作它才能正常工作

RequestOptions requestOptions = new RequestOptions();
requestOptions.diskCacheStrategy(DiskCacheStrategy.ALL);
Glide.with( context )
            .load( imagesModelList.get(position).getUrl() ).apply(requestOptions)
            .into( holder.imageView );
    holder.delete_item.setVisibility(View.VISIBLE);

0

在执行了 diskCacheStrategy( DiskCacheStrategy.RESULT ) 之后,我发现 Feedler 正从网络加载图片,而我只是在滚动网格 RecyclerView。


只需使用此 diskCacheStrategy(DiskCacheStrategy.RESULT),这是您需要保存在缓存中的最佳选择。 - Koustuv Ganguly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接