При правильном понимании вы хотите показывать рекламу в своем обзоре через определенные промежутки времени.Если это так, вы должны внести некоторые изменения в свой адаптер.
Сначала определите эти переменные в своем адаптере.
static final int VIEW_TYPE_NEWS = 0;
static final int VIEW_TYPE_AD = 1;
boolean isAd = false;
Далее в вашем методе onCreateViewHolder вы должны сделать что-то вроде этого,Смотрите, есть два разных макета list_item, не забудьте создать их в ваших макетах.
@Override
public ViewHolderNews onCreateViewHolder(ViewGroup parent, int viewType) {
int layoutId = -1;
switch (viewType) {
case VIEW_TYPE_AD:
layoutId = R.layout.list_ad_item;
break;
case VIEW_TYPE_NEWS:
layoutId = R.layout.list_news_item;
break;
}
View view = LayoutInflater.from(parent.getContext())
.inflate(layoutId, parent, false);
return new ViewHolderNews(view);
}
Затем onBindViewHolder:
@Override
public void onBindViewHolder(ViewHolderNews holder, int position) {
switch (getItemViewType(position)) {
case VIEW_TYPE_AD:
// Create an ad request. Check logcat output for the hashed device ID to
// get test ads on a physical device. e.g.
// "Use AdRequest.Builder.addTestDevice("ABCDEF012345") to get test ads on this device."
// Load your ad here.
break;
case VIEW_TYPE_NEWS:
// Load your normal content here.
break;
}
}
Наконец, последний способ переопределить это:
@Override
public int getItemViewType(int position) {
int positionNew = position + 1;
if ((positionNew % ITEMS_PER_AD == 0) && (position > 0)) {
isAd = true;
return VIEW_TYPE_AD;
} else {
isAd = false;
return VIEW_TYPE_NEWS;
}
}
Надеюсь, это решит вашу проблему.