0

我有一个文章列表,每 10 篇文章有一个广告。问题是 - 而不是广告被添加到列表中,它实际上取代了一篇文章。

正在发生的事情的示例:

- ad //taking the place of article 1
- article 2
- article 3
- article 4
...
- article 9
- article 10
- ad //taking the place of article 11
- article 12

我让它在每 X 篇文章中展示广告的方式是ArrayAdapter

@Override
//determines which view type I want to use
public int getItemViewType(int position) {
    this.currentLayout = position % 11 == 0 ? 1 : 0;
    return this.currentLayout;
}

@Override
//says there are 2 different view types I want to use
public int getViewTypeCount() {
    return 2;
}

所以 - 我想现在我看到它发生了,这是有道理的为什么,但是......我怎样才能让广告出现然后下一篇文章?

以前的尝试:

我以前在我的 XML 中将文章放在文章本身的下方,然后根据 # 将其打开/关闭,但被告知这是过多的 XML(并且无论如何都有一些问题)。

我还尝试在显示广告时将文章添加为下一个项目,但是 - 如果我不是这样的菜鸟,我会立即意识到这不起作用(它会重复文章 - 很多):

public int getItemViewType(int position) {
    //...
    if(this.currentLayout == 1) this.insert(this.getItem(position), position);
    //...
4

2 回答 2

0

退房MergeAdapter。它允许您将适配器和视图混合到一个统一的适配器中,并负责为您校正位置。您可能必须创建多个实例ArrayAdapter来创建部分,然后像有部分标题一样放置广告。

于 2013-01-16T06:00:51.553 回答
0

我怎样才能让广告出现,然后下一篇文章?

在您的适配器中,您需要覆盖getCount()以考虑广告,然后进行调整positiongetView()不加载错误的数据。

在您的示例中:

  • getCount()应该在您的示例中返回返回 12 篇文章 + 2 个广告 = 14 行。
  • getView()position当你打电话时应该调整一下getItem(),也许:(getItem(position - (position / 11) + 1)但老实说我很累我的数学可能会很差。)
于 2013-01-16T05:04:48.990 回答