我正在尝试在回收站 View 中实现 admob 横幅广告 我想在每个回收站 View 项目被 2 整除后显示横幅广告 我的问题是当我尝试实现条件广告显示在第二个位置但替换了回收站 View 项目从那个地方可以看出为什么回收商查看项目没有显示在显示广告的特定位置。
这是我到目前为止所做的:
public class HomeBookAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private static final int LAYOUT_ADS= 0;
private static final int LAYOUT_BOOKS= 1;
private ArrayList<LoadHomeBooks> list;
private Context context;
AdRequest adRequest;
public HomeBookAdapter(ArrayList<LoadHomeBooks> list,Context context){
this.list = list;
this.context = context;
}
@Override
public int getItemViewType(int position) {
if(!(position == 0) && position % 2 == 0){
return LAYOUT_ADS;
}else{
return LAYOUT_BOOKS;
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view =null;
RecyclerView.ViewHolder viewHolder = null;
if(viewType==LAYOUT_ADS)
{
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.adview_layout,parent,false);
viewHolder = new AdViewHolder(view);
}
else
{
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.home_book_row,parent,false);
viewHolder= new BookViewHolder(view);
}
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if(holder.getItemViewType() == LAYOUT_ADS){
AdViewHolder adHolder = (AdViewHolder)holder;
adRequest = new AdRequest.Builder().build();
adHolder.mAdView.loadAd(adRequest);
}else{
BookViewHolder bookHolder = (BookViewHolder)holder;
LoadHomeBooks model = list.get(position);
final String bookId = model.getbUid();
final String bookName = model.getbName();
final String bookImage = model.getbImage();
final String bookSub = model.getbSub();
final String bookClass = model.getbClass();
//User Id
final String bId = model.getbId();
RequestOptions requestOptions = new RequestOptions();
requestOptions.placeholder(R.drawable.openbook);
Glide.with(context).load(model.getbImage()).apply(requestOptions).into(bookHolder.homeBookImage);
bookHolder.homeBookName.setText(model.getbName());
bookHolder.homeSubject.setText(model.getbSub());
bookHolder.homeClass.setText(model.getbClass());
}
}
@Override
public int getItemCount() {
return list.size();
}
public class AdViewHolder extends RecyclerView.ViewHolder {
AdView mAdView;
public AdViewHolder(@NonNull View itemView) {
super(itemView);
mAdView = itemView.findViewById(R.id.mAdView);
}
}
public class BookViewHolder extends RecyclerView.ViewHolder {
TextView homeBookName,homeSubject,homeClass;
ImageView homeBookImage;
public BookViewHolder(@NonNull View itemView) {
super(itemView);
homeBookName = itemView.findViewById(R.id.homeBookName);
homeSubject = itemView.findViewById(R.id.homeSubject);
homeClass = itemView.findViewById(R.id.homeClass);
homeBookImage = itemView.findViewById(R.id.homeBookImage);
}
}
}
有人请让我知道我做错了什么或需要改变什么才能获得理想的结果。任何帮助将不胜感激。
谢谢
最佳答案
我认为您应该使用原生广告而不是横幅广告,因为横幅广告不能像这样实现,因为它会违反 Google Admob 政策。
对于上面的代码,一切看起来都很好,也许你应该检查你的 logcat 以获取更多信息或者:
“这可能是因为您最近才创建了一个新的广告单元 ID 并请求实时广告。如果是这种情况,可能需要几个小时才能开始转换广告。如果您收到的是测试广告,那么您的实现没问题。只需等待几个小时,看看您是否能够收到实时广告。如果没有,可以将您的广告单元 ID 发送给我们,以便我们进行调查。”
所以基本上你需要等待几个小时。
关于android - AdMob 广告未在回收者 View 中正常显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57735893/