【发布时间】:2020-06-12 18:56:57
【问题描述】:
我在 Recyclerview 中有不同的视图,其中之一是多图像视图。多图像视图不过是水平滚动视图下的线性布局,包含动态创建的图像视图。使用滑行加载图像。它在第一次加载时工作正常。但是当 Recycler 视图被刷新时,之前的帖子中出现了重复的图像。我也使用了 Glide Clear 方法,但它也不起作用。
这是OnBindViewHolder 方法:
{
if (!(viewHolder is AdapterHolders.PostMultiImagesViewHolder holder))
return;
if (item.PostData.PhotoMulti?.Count > 4 || item.PostData.PhotoAlbum?.Count > 4)
{
var imagesList = item.PostData.PhotoMulti ?? item.PostData.PhotoAlbum;
foreach ( var img in imagesList)
{
ImageView imageView = new ImageView(holder.ItemView.Context);
imageView.SetPadding(2, 2, 2, 2);
imageView.SetOnClickListener(holder);
holder.layout.AddView(imageView);
FullGlideRequestBuilder.Load(img.Image).Placeholder(Resource.Drawable.ImagePlacholder).FitCenter().Error(Resource.Drawable.ImagePlacholder).Into(imageView);
ImageViewList.Add(imageView);
}
}
break;
这是OnCreateViewHolder 方法:
case (int)PostModelType.MultiImages:
{
itemView = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.Post_Content_MultiImages_Layout, parent, false);
var vh = new AdapterHolders.PostMultiImagesViewHolder(itemView, this, PostClickListener);
Console.WriteLine("WoLog: NativePostAdapter / OnCreateViewHolder >> " + (JavaSystem.CurrentTimeMillis() - startTime) + " PostModelType = MultiImages" + viewType);
return vh;
}
这是OnViewRecycled 方法:
else if (holder is AdapterHolders.PostMultiImagesViewHolder viewHolder12)
{
foreach (ImageView img in ImageViewList)
{
//viewHolder12.layout.GetChildAt(img.Id);
Glide.With(ActivityContext).Clear(img);
}
}
【问题讨论】: