【问题标题】:Glide loading images each time when scrolling recyclerview每次滚动recyclerview时滑动加载图像
【发布时间】:2016-01-25 04:58:22
【问题描述】:

我有一个RecyclerViewRecyclerView 的每个项目都有ImageView。 我正在使用 GlideImageView 中加载图像,当我向下滚动 RecyclerView 时,它会加载图像,这很好,但是当我再次 srcoll 向上 RecyclerView 时,它会再次加载这些图像已经加载的图像。我不想再次加载那些已经加载的图像。

我正在使用以下代码通过 Glide 加载图像

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

【问题讨论】:

  • 回收站查看邮政编码
  • 你好,你找到解决这个问题的方法了吗?

标签: android android-recyclerview android-glide


【解决方案1】:

您可以将图像缓存在磁盘或内存中。

默认情况下,图片由 Glide 缓存在内存中

还好知道Glide默认会将所有图片资源放入内存缓存中。因此,不需要特定的调用 .skipMemoryCache( false )。

如果要在磁盘中启用缓存,可以使用以下方法之一

  1. DiskCacheStrategy.SOURCE 仅缓存原始全分辨率 图片。
  2. DiskCacheStrategy.RESULT 只缓存最终图像,减少后 分辨率(以及可能的转换)
  3. DiskCacheStrategy.ALL 缓存图片的所有版本(默认 行为)

用法:

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

【讨论】:

    【解决方案2】:

    执行此操作后 diskCacheStrategy(DiskCacheStrategy.RESULT) 我也在 feedler 中看到这是从网络加载图像..我只是滚动网格回收器视图..

    【讨论】:

    • 只需使用此diskCacheStrategy( DiskCacheStrategy.RESULT),这是您需要保留在缓存中的最佳值。
    【解决方案3】:

    你不能直接使用这个方法,像下面这样我会工作

    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);
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-04-25
      • 1970-01-01
      • 2016-08-11
      • 1970-01-01
      相关资源
      最近更新 更多