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.
列表中添加一个重复的项目
我正在尝试在 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.
列表中添加一个重复的项目