Как разместить рекламу в разрезе переработчика? - PullRequest
0 голосов
/ 10 июля 2019

Я использовал библиотеку представления секционированного рециркулятора, которая называется IntruderShanky / SectionedRecyclerView.

Ссылка для секционированной библиотеки Просмотр разделов

Используя эту библиотеку, я успешно добавил разделы с дочерними элементами, но проблема в том, что мне нужно добавлять объявления после каждых 10 элементов.

Предположим, у меня есть 5 секций, в каждой из которых по 10 детей, т.е.

    void section_item_adder()
{

    for (int j=0;j<5; j++) {

        for (int i = 0; i < 10; i++) {
            childList.add(new Child(Section_filepath, Section_filename, false, FileSize_Check));

        }
        sectionHeaders.add(new SectionHeader(childList, "Group " + section_counter + "", section_counter + 1));

    }

}

для дочернего элемента я передаю объекты дочернего класса в виде списка, но что мне делать с нативными объявлениями, которые будут передаваться как дочерние в разделах.

 public static final int ITEM_PER_AD = 10;

void SetAdsInAdapter()
{

    for(int i = 0; i < sectionHeaders.size();i+= ITEM_PER_AD)
    {

      final AdView adView = new  AdView (MainActivity.this);
      adView.setAdSize(AdSize.BANNER);
      adView.setAdUnitId(NATIVE_AD_ID);
   //   sectionHeaders.add(new SectionHeader(childList, "" ,section_counter+1));
     // adapterRecycler.a
     sectionHeaders.add(new SectionHeader(section_counter+1));

    }



}

1 Ответ

0 голосов
/ 10 июля 2019

Это можно сделать с помощью метода getItemViewType ().Позаботьтесь о параметре viewType в onCreateViewHolder ().

 public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

   public final int ADS_VIEW_TYPE = 0; 
   public final int ITEM_VIEW_TYPE = 1;

   class ViewHolder0 extends RecyclerView.ViewHolder {
    ...
    public ViewHolder0(View itemView){
    ...
    }
   }

class ViewHolder2 extends RecyclerView.ViewHolder {
    ...
    public ViewHolder2(View itemView){
    ...
}

@Override
public int getItemViewType(int position) {
    // add ads viewType at each 10th position
    if(position % 10 == 0){
      return ADS_VIEW_TYPE;
    }
    return ITEM_VIEW_TYPE;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     switch (viewType) {
         case ADS_VIEW_TYPE: return new ViewHolder0(...);
         case ITEM_VIEW_TYPE: return new ViewHolder2(...);
         ...
     }
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
    switch (holder.getItemViewType()) {
        case 0:
            ViewHolder0 viewHolder0 = (ViewHolder0)holder;
            ...
            break;

        case 2:
            ViewHolder2 viewHolder2 = (ViewHolder2)holder;
            ...
            break;
    }
  }
}
...