【问题标题】:Glide 3.8.0 has duplicated image in RecyclerViewGlide 3.8.0 在 RecyclerView 中有重复的图像
【发布时间】:2023-03-21 13:16:01
【问题描述】:

我在我的RecyclerView 适配器中使用滑行,当我快速滚动它时,通常会有一些带有重复图像的项目。但是当我慢慢滚动时它不会发生。

这是我的毕业典礼。

implementation 'com.github.bumptech.glide:glide:3.8.0'

这是我的 bindViewHolder

@Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        if(holder instanceof NewsViewHolder) {
            NewsViewHolder newsViewHolder = (NewsViewHolder) holder;
            final Article article = articleList.get(position);

            newsViewHolder.tvName.setText(article.getTitle());
            newsViewHolder.tvDescription.setText(article.getDescription());
            ImageLoaderHelper.getImageFromUrl(article.getUrlToImage(), newsViewHolder.ivImage, signatureCache);

            newsViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    onNewsItemClickListener.onNewsItemClick(article);
                }
            });
        }
    }

这是我的助手

public class ImageLoaderHelper {

    public static void getImageFromUrl(String url, final ImageView imageView, String signature) {
        if(url != null && !url.equals("")) {
            Glide.with(imageView.getContext())
                    .load(url)
                    .asBitmap()
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
                    .skipMemoryCache(true)
                    .signature(new StringSignature(signature.trim()))
                    .into(new SimpleTarget<Bitmap>() {
                        @Override
                        public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
                            imageView.setImageBitmap(resource);
                        }
                    });
        }
        else {
            Glide.clear(imageView);
            imageView.setImageBitmap(null);
        }
    }
}

然后是图像视图

<ImageView
     android:id="@+id/ivImage"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:adjustViewBounds="true"
     android:scaleType="centerCrop" />

这个有什么解决办法吗?

【问题讨论】:

  • 如果ImageView 纠正了它的错误,那么您可以在加载图像时尝试使用 ImageHolder 一些默认图像(或 null)。
  • 我试过把这个 imageView.setImageBitmap(null) 放在 if(url != null && !url.equals("")) { 但它仍然在发生
  • 尝试在 glide bulder 中设置 .placeholder(R.drawable.placeholder_image) .error(R.drawable.placeholder_image)。
  • 当我快速滚动时它仍然重复
  • duplicate image 是什么意思?

标签: java android android-recyclerview android-glide


【解决方案1】:

试试

RequestOptions requestOptions = new RequestOptions();
requestOptions.error(R.drawable.no_image);
Glide.with(context).setDefaultRequestOptions(requestOptions).load(ApiInterface.Image_URL_Local +
              recentViewModels.get(position).getImagePath()).into(holder.binding.ivProductImage);

在适配器中的 onBindViewHolder 中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    相关资源
    最近更新 更多