xamarin android: показ рекламы в recycleview скрыть некоторые статьи в записях rss - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь показать рекламу в повторном просмотре, и мне удалось сделать это, используя приведенный ниже код ... проблема в том, что в каждой позиции "MspaceBetweenAds" показывалось объявление, но статья на этом месте заменена объявлением, которое я пыталсяисправить это, изменив ItemCount () с помощью Mposts.Count + (Mposts.count% MspaceBetweenAds), но я получаю ошибку «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_

1 Ответ

0 голосов
/ 25 октября 2018

Поскольку демо, которое вы разместили, содержит сторонний пакет, я не могу запустить его напрямую и изменить демо для вас.Поток - это мое решение вашей проблемы:

Причины ошибки: То, как вы делаете (изменение ItemCount () с помощью Mposts.Count + (Mposts.count% MspaceBetweenAds), не может изменить реальную длинуMposts, в результате это приводит к ошибке «IndexOutOfBounds».

Решение Если вы хотите вставить рекламу в свой recylerview, вам нужно не только изменить свой адаптер, чтобы показать оба элементаи объявления, но также необходимо изменить файл ресурсов макета, т. е. вам нужно вставить данные объявлений в список данных для вашего recylerview. Или вы можете просто добавить дублированный элемент в список каждые элементы [MspaceBetweenAds].

...