xamarin android:在 recycleview 中显示广告隐藏了 rss 条目中的一些文章

xamarin android: showing ads in recycleview hide some articles in rss entries

我正在尝试在 recycleview 中展示广告,我使用下面的代码成功做到了。问题是在每个 "MspaceBetweenAds" 位置显示广告,但此处的文章替换为广告 我试图通过 Mposts.Count + (Mposts.count% MspaceBetweenAds) 修改 ItemCount() 来修复它,但我收到 "IndexOutOfBounds " 错误 请帮忙..这是我的代码

public class AdsView : ListViewHolder
        {
            public AdView mAdView { get; private set; }
            public AdsView(View view) : base(view)
            {
               mAdView = view.FindViewById<AdView>(Resource.Id.AdsCard);
            }
        }

 public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
        {
            RecyclerView.ViewHolder vh = null;
            switch (viewType)
            {
                case 1:
                    View vBig = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.BigCard, parent, false);
                    vh = new MyView(vBig);
                    break;
                case 2:                  
                    View vAds = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.AdsCard, parent, false);
                    vh = new AdsView(vAds);
                    break;
            }
            return vh;
        } 
 public override void OnBindListViewHolder(ListViewHolder holder, int position)
        {
            var MyHolder = holder as MyView;
            switch (holder.ItemViewType)
            {
                case 1:
                    // code to show posts articles here
                    break;
                case 2:                 
                    var AdHolder = holder as AdsView;
                    fnc.AddBannerAd(AdHolder.mAdView);
                    break;
            }
        }
public override int GetItemViewType(int position)
        {
            if (position > 0 && position % mSpaceBetweenAds  == 0) { return 2; }
            else { return 1; }
        }

这是一个演示应用 https://drive.google.com/open?id=1Tk3G8dw9nqIffxmEFNGqIgXNzCJJPxD_

由于您发布的演示包含第 3 方包,我无法直接 运行 并为您修改演示。流动是我对你问题的解决方案:

错误原因: 你做的方式(修改 ItemCount() by Mposts.Count + (Mposts.count% MspaceBetweenAds) 不能改变 Mposts 的实际长度,因此,它会导致 "IndexOutOfBounds " 错误。

解决方案 如果你想在你的recylerview中插入广告,你不仅需要修改你的适配器来显示item和广告,还需要修改你的布局资源文件,即你需要将广告数据插入到数据列表中你的回收视图。或者您可以简单地在每个 [MspaceBetweenAds]items.

列表中添加一个重复的项目