如何解决原生广告与RecyclerView项重叠
我尝试在RecyclerView中实现原生广告。应在回收者视图中每3个项目放置一次广告。我使用原生广告模板。广告已加载,但它们在RecyclerView中有重叠的项目。我尝试了几种解决方案,但是它们没有用。请帮助我,谢谢。
下面是Adapter类的代码:
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
Context c;
ArrayList<Model> models;
private static final int CONTENT_TYPE = 1;
private static final int AD_TYPE = 0;
public MyAdapter(Context c,ArrayList<Model> models) {
this.c = c;
this.models = models;
}
@Override
public int getItemViewType(int position) {
if (position % 3 == 0) {
return AD_TYPE;
} else {
return CONTENT_TYPE;
}
}
class adViewHolder extends RecyclerView.ViewHolder {
TemplateView adTemplate;
public adViewHolder(@NonNull View itemView) {
super(itemView);
adTemplate = itemView.findViewById(R.id.native_ad);
}
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,int viewType) {
if (viewType == AD_TYPE) {
adViewHolder myadViewHolder = new adViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_ads,null,false));
return myadViewHolder;
} else {
MyHolder myHolder = new MyHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.single_list_item,false));
return myHolder;
}
}
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder,int position) {
if (getItemViewType(position) == CONTENT_TYPE) {
((MyHolder) holder).mTitle.setText(models.get(position).getTitle());
((MyHolder) holder).mDescription.setText(models.get(position).getDesc());
((MyHolder) holder).mImageView.setImageResource(models.get(position).getImage());
} else if (getItemViewType(position) == AD_TYPE) {
final AdLoader adLoader = new AdLoader.Builder(c,"ca-app-pub-3940256099942544/2247696110")
.forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
@Override
public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
NativeTemplateStyle styles = new NativeTemplateStyle.Builder().build();
TemplateView template = ((adViewHolder) holder).adTemplate;
template.setStyles(styles);
template.setNativeAd(unifiedNativeAd);
}
})
.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(int errorCode) {
}
})
.withNativeAdOptions(new NativeAdOptions.Builder()
.build())
.build();
adLoader.loadAd(new AdRequest.Builder().build());
}
}
@Override
public int getItemCount() {
return models.size();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。