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

时间:2018-03-29 13:43:06

标签: android xamarin android-recyclerview

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

所以我的RecyclerView就像这样加载

enter image description here

问题在于您看到tag0tag1 - 如果我向下滚动并返回,则会添加一组重复的tag0tag1 - 如图所示在以下屏幕截图中

enter image description here

  

每当我滚动

时,它会一遍又一遍地发生

我的RecyclerView适配器代码如下(简短版)

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

        }

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

干杯

0 个答案:

没有答案