0

I have used sectioned recycler view library called "IntruderShanky/SectionedRecyclerView".

The link for sectioned library Sections recycler view

Using this library i have successfully added sections with child items, but the problem is i have to add ads after each 10 items.

Suppose i have 5 sections with each having 10 childs i.e

    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));

    }

}

for child item i am passing Child class objects as list, but what should i do with native ads to be passed as child in sections.

 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 Answers1

0

This can be done using getItemViewType() method. Take care of the viewType parameter in 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;
    }
  }
}