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
Post a Comment