android - How to add ads at random position in recyclerview having progressbar at bottom? -


i have app contain recyclerview , progressbar @ bottom when scroll end of recyclerview sends server request more data working fine problem want add ads between recyclerview @ random position. how add in recyclerview @ random position.

code:-

@override public int getitemviewtype(int position) {     return contacts.get(position) == null ? view_type_loading : view_type_item; }  @override public recyclerview.viewholder oncreateviewholder(viewgroup parent, int viewtype) {     if (viewtype == 0) {         view view = layoutinflater.from(activity).inflate(r.layout.item_recycler_view_row, parent, false);         return new userviewholder(view);     } else if (viewtype == 1) {         view view = layoutinflater.from(activity).inflate(r.layout.item_loading, parent, false);         return new loadingviewholder(view);     } else {      }     return null; }  @override public void onbindviewholder(recyclerview.viewholder holder, int position) {     if (holder instanceof userviewholder) {         contact contact = contacts.get(position);         userviewholder userviewholder = (userviewholder) holder;         userviewholder.phone.settext(contact.getemail());         userviewholder.email.settext(contact.getphone());     } else if (holder instanceof loadingviewholder) {         loadingviewholder loadingviewholder = (loadingviewholder) holder;         loadingviewholder.progressbar.setindeterminate(true);     } }  @override public int getitemcount() {     return contacts == null ? 0 : contacts.size(); } 

in adapter, first need override getitemviewtype(), example:

@override public int getitemviewtype(int position) {     if (contacts.get(position) == null)         return view_type_loading;     else if (position % 5 == 0)         return ad_type;     else {         return view_type_item;     } } 

after oncreateviewholder, inflate different view according type this:

@override public recyclerview.viewholder oncreateviewholder(viewgroup viewgroup, int viewtype) {     view view = null;     if (viewtype == ad_type) {         view adview = layoutinflater.from(parent.getcontext()).inflate(r.layout.native_ads, viewgroup, false);         return new viewholderadmob(adview);     } else if (viewtype == view_type_item) {         view = layoutinflater.from(viewgroup.getcontext()).inflate(r.layout.list_item_layout, viewgroup, false);         return new userviewholder(view);     }else if (viewtype == view_type_loading) {         view = layoutinflater.from(activity).inflate(r.layout.item_loading, viewgroup, false);         return new loadingviewholder(view);     }     return null; } 

native ads xml

<com.google.android.gms.ads.adview     android:id="@+id/adview"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_centerhorizontal="true"     android:layout_alignparentbottom="true"     ads:adsize="banner"     ads:adunitid="@string/banner_ad_unit_id"> </com.google.android.gms.ads.adview> 

adviewholder class

public static class viewholderadmob extends recyclerview.viewholder {     public adview madview;     public viewholderadmob(view view) {         super(view);         madview = (adview) view.findviewbyid(r.id.adview);         adrequest adrequest = new adrequest.builder()                 .addtestdevice(adrequest.device_id_emulator)                 .build();         madview.loadad(adrequest);     } } 

also don't forget change getitemcount() accordingly: return contacts.size()+ (contacts.size() % 5)


Comments

Popular posts from this blog

python - Selenium remoteWebDriver (& SauceLabs) Firefox moseMoveTo action exception -

html - How to custom Bootstrap grid height? -

transpose - Maple isnt executing function but prints function term -