I want to place the admob native advanced ads in every 3 position of my recycler view in android app.
I would like to use the template provided by Admob.
https://github.com/googleads/googleads-mobile-android-native-templates
Here is XML code implementation of native ads
<com.google.android.ads.nativetemplates.TemplateView
android:id="@+id/my_template"
<!-- this attribute determines which template is used. The other option is
@layout/gnt_medium_template_view -->
app:gnt_template_type="@layout/gnt_small_template_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Here is Java code implementation of Admob
MobileAds.initialize(this, "[_app-id_]");
AdLoader adLoader = new AdLoader.Builder(this, "[_ad-unit-id_]")
.forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
@Override
public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
NativeTemplateStyle styles = new
NativeTemplateStyle.Builder().withMainBackgroundColor(background).build();
TemplateView template = findViewById(R.id.my_template);
template.setStyles(styles);
template.setNativeAd(unifiedNativeAd);
}
})
.build();
adLoader.loadAd(new AdRequest.Builder().build());
}
RecyclerView Adapter Class:
public class ArticleAdapter extends RecyclerView.Adapter<ArticleAdapter.MyViewHolder>{
private Context mContext;
private List<ArticleJson> articleList;
String titleoflist;
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView txtTitle,txtDesc,txtStatus,txtColor,txtAuthor;
LinearLayout linearLayout;
private ArticleJson m_articleJson;
public MyViewHolder(View view) {
super(view);
txtTitle = view.findViewById(R.id.texViewArticleTitle)
linearLayout = view.findViewById(R.id.article_linearlayout);
}
public void bindView(final ArticleJson articleJson){
m_articleJson = articleJson;
txtTitle.setText(articleJson.getmTitle());
txtAuthor.setText(titleoflist);
}
}
public ArticleAdapter(Context mContext, List<ArticleJson> articleList,String titleoflist) {
this.mContext = mContext;
this.articleList = articleList;
this.titleoflist = titleoflist;
}
@NonNull
@Override
public ArticleAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item_article, parent, false);
return new ArticleAdapter.MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull ArticleAdapter.MyViewHolder holder, int position) {
final ArticleJson articleJson = articleList.get(position);
holder.bindView(articleJson);
holder.linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Toast
}
});
}
@Override
public int getItemCount() {
return articleList.size();
}
}