gpt4 book ai didi

android - RecyclerView 适配器仅在滚动时添加重复的 TEXTVIEW

转载 作者:行者123 更新时间:2023-11-29 15:36:10 30 4
gpt4 key购买 nike

我有一个向 RecyclerView 添加数据的 RecyclerView 适配器,它工作正常,直到我上下滚动并看到重复的 TextView。

所以我的 RecyclerView 加载是这样的

enter image description here

问题出在您看到 tag0 的地方和 tag1 - 如果我向下滚动并返回,一组重复的 tag0tag1已添加 - 如以下屏幕截图所示

enter image description here

It keeps happening over and over again everytime I scroll

我的 RecyclerView Adapter 代码如下(精简版)

class VideoAdapter : RecyclerView.Adapter
{
Context _context;
private List<VideoDisplayModel> _AllLinks;

public VideoAdapter(List<VideoDisplayModel> AllLinks)
{
_AllLinks = AllLinks;
}


public override int ItemCount
{
get
{
return _AllLinks.Count;
}
}

public override long GetItemId(int position)
{
return position;
}
public override int GetItemViewType(int position)
{
return position;
}

public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
View listitem = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.VideoRecyclerRow, parent, false);
TextView title = listitem.FindViewById<TextView>(Resource.Id.titleVideo);
ImageView image = listitem.FindViewById<ImageView>(Resource.Id.imageVideo);
LinearLayout tagsLayout = listitem.FindViewById<LinearLayout>(Resource.Id.tagsVideoLayout);

VideoRecylerViewHolder view = new VideoRecylerViewHolder(listitem)
{
Title = title,
Thumb = image,
TagsLayout = tagsLayout
};

_context = parent.Context;
return view;
}


public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
var viewHolder = holder as VideoRecylerViewHolder;
var currentLink = _AllLinks[position];
viewHolder.Title.Text = currentLink.Title;


for(int i = 0; i < 2; i++)
{
TextView Txt = new TextView(_context);
Txt.Text = "test"+i.ToString();
Txt.SetBackgroundResource(Resource.Drawable.roundtext);
Txt.SetPadding(30, 10, 30, 10);
Txt.SetTextColor(global::Android.Graphics.Color.ParseColor("#373944"));
Txt.SetTextSize(Android.Util.ComplexUnitType.Dip, 12);
viewHolder.TagsLayout.AddView(Txt);
}

}

我不明白,我做错了什么 - 有什么想法吗?

干杯

最佳答案

RecyclerView 回收相同的布局,因此如果您之前添加了一个 View ,它会添加另一个 View 。确保在添加 View 之前清除父 View :

viewHolder.TagsLayout.removeAllViews();  //THIS

for(int i = 0; i < 2; i++) {
...
viewHolder.TagsLayout.AddView(Txt);
}

关于android - RecyclerView 适配器仅在滚动时添加重复的 TEXTVIEW,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49557682/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com