【发布时间】: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