[英]Putting an AdMob native ad in a listView
我想在我的应用中使用新的AdMob原生广告功能。 我想在listView中放置原生广告,其中列表中的每20个项目都是一个广告。 是否有可能通过Native Express广告实现这一目标? 或者我必须使用Natve高级广告吗?
那么@Jagjit已经表现出了正确的方法。 我会一步一步地写出来
1.创建自己的自定义适配器(通过扩展BaseAdapter
),该适配器将显示为listview项目
2.创建另一个布局资源文件以显示原生广告(设计应类似于上一步中创建的自定义适配器)
3.在getView
方法中执行以下操作(用于在第二个位置显示广告)
if (position == 1) {
rowView = inflater.inflate(R.layout.native_ad_adapter, null);
NativeExpressAdView adView = (NativeExpressAdView)rowView.findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
adView.loadAd(adRequest);
} else {
rowView = inflater.inflate(R.layout.my_custom_list, null);
TextView bigtxt = (TextView) rowView.findViewById(R.id.txt1);
...
...
}
您的自定义适配器是my_custom_list
您会看到广告正在加载。 但是存在一个小问题,位置1的实际列表项将不会显示。
4.为此,在填充ListView
之前,在列表中添加一个额外的项目。 我使用了ArrayList
所以我可以轻松地完成它。 我的方法如下
arrayList1.add(1,"ad here");
listview1.setAdapter(new MyAdapter(callerView.getContext(), arrayList1.toArray(new String[arrayList1.size()])));
方法是扩展BaseAdapter并创建自己的自定义适配器,而不是使用默认的ArrayAdapter。 然后,当您想要展示广告时,您需要返回“广告”视图而不是通常的普通视图。 这意味着您需要覆盖getCount()以返回更多行(例如,如果您有10行,则表示您需要返回11 = 10个实际内容+ 1个广告)
然后你需要决定创建这个View的位置,我想你可以通过简单地检查位置变量来做到这一点:
if (position == VALUE) {
// Create and return Ad View
} else {
// Create and return a normal View
}
希望能帮助到你。 我发现这是最好的,但希望找到更好的优化方式
我想Admobadapter lib就是您正在寻找的...它包装您的适配器以自动获取并显示listview或recyclerview中每个X项目中的广告块。 您只需执行以下操作:1。设置合适类型的包装器(基本上有4个包装器 - 用于列表视图,用于显示高级广告的recyclelerview和用于Express广告的2个包装器)2。将适配器注入包装器3.注入listview / recyclerview的包装器4.用你的数据填充你的适配器,引发onDataSetChanged()然后包装器将自己做这些东西。
此外,它还支持Express原生广告和高级原生广告。 根据这个问题,他们很快就会添加一个Maven / Gradle支持。 祝好运!
您需要创建自己的自定义列表视图和自定义适配器。
LinearLayout
作为子项 在ScrollView
创建一个将您的布局展开到LinearLayout
的类。 像这样 :
private static void CreateIntemEmptty(Context context, ViewGroup view) { LayoutInflater inflater = (LayoutInflater) Home.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View child = inflater.inflate(R.layout.empty, null); ViewGroup Prnt =(ViewGroup)view.getParent().getParent(); Prnt.removeViewInLayout((View)view.getParent()); ViewGroup.LayoutParams p =new ViewGroup.LayoutParams(Prnt.getWidth(),Prnt.getHeight()); Prnt.addView(child,p); }
在这段代码中我创建一个空元素并添加它
您可以将LinearLayout
的ADS添加为子项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.