[英]How to place Native Ads every 3 items in RecyclerView?
我想放置來自谷歌 AdMob 的原生廣告或橫幅。 它應該在我的 RecyclerView 中每 3 個項目放置一次。 我找到了一些解決方案,但不幸的是,它沒有用。 謝謝你的幫助。
主class:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_benefits);
toolbar = findViewById(R.id.toolbar_benefits);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mRecyclerView = findViewById(R.id.benefits_recycler);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
myAdapter = new MyAdapter(this, benefitsList());
mRecyclerView.setAdapter(myAdapter);
}
我的適配器 class:
public class MyAdapter extends RecyclerView.Adapter<MyHolder> {
Context c;
ArrayList<Model> models;
public MyAdapter(Context c, ArrayList<Model> models) {
this.c = c;
this.models = models;
}
@NonNull
@Override
public MyHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.single_list_item, null);
return new MyHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyHolder myHolder, int i) {
myHolder.mTitle.setText(models.get(i).getTitle());
myHolder.mDescription.setText(models.get(i).getDesc());
myHolder.mImageView.setImageResource(models.get(i).getImage());
}
@Override
public int getItemCount() {
return models.size();
}
MyHolder class:
public class MyHolder extends RecyclerView.ViewHolder {
ImageView mImageView;
TextView mTitle, mDescription;
public MyHolder(@NonNull View itemView) {
super(itemView);
this.mImageView = itemView.findViewById(R.id.rowImage);
this.mTitle = itemView.findViewById(R.id.rowTitle);
this.mDescription = itemView.findViewById(R.id.rowDescription);
}
就個人而言,我通過讓我的回收站視圖持有一個界面來做到這一點。 然后為普通回收站視圖項目和 AdHolder 項目提供兩種實現。 然后我每 3 個項目插入一個 AdHolder。
您也可以按照此代碼實驗室執行類似操作: https://codelabs.developers.google.com/codelabs/admob-native-advanced-feed-android/#0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.