我想在我的应用中使用新的AdMob原生广告功能。我想在listView中放置原生广告,其中列表中的每20个项目都是一个广告。是否有可能通过Native Express广告实现这一目标?或者我必须使用Natve高级广告吗?
答案 0 :(得分:4)
那么@Jagjit已经表现出了正确的方法。我会一步一步地写出来
1.创建您自己的自定义适配器(通过扩展BaseAdapter
),它将显示为listview项目
2.创建另一个布局资源文件以显示原生广告(设计应类似于上一步中创建的自定义适配器)
3.在getView
方法中执行以下操作(在第2位置显示广告)
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()])));
答案 1 :(得分:2)
方法是扩展BaseAdapter并创建自己的自定义适配器,而不是使用默认的ArrayAdapter。然后,当您想要展示广告时,您需要返回“广告”视图而不是通常的普通视图。这意味着您需要覆盖getCount()以返回更多行(例如,如果您有10行,则表示您需要返回11 = 10个实际内容+ 1个广告)
然后你需要决定创建这个View的位置,我想你可以通过简单地检查位置变量来做到这一点:
if (position == VALUE) {
// Create and return Ad View
} else {
// Create and return a normal View
}
希望它有所帮助。我发现这是最好的,但希望找到更好的优化方式
答案 2 :(得分:2)
我猜Admobadapter lib正是您要找的......它会让您的适配器自动获取并在listview或recyclerview中的每个X项目中显示广告块。你只需按以下步骤操作: 1.适当类型的设置包装器(基本上有4个包装器 - 用于列表视图,用于回收器视图以显示高级广告,2个用于快速广告) 2.将适配器注入包装器 3.将包装器注入listview / recyclerview 4.用你的数据填充你的适配器,引发onDataSetChanged()然后包装器将自己做这些东西。
此外,它还支持Express原生广告和高级原生广告。根据这个issue,他们很快就会添加Maven / Gradle支持。祝你好运!
答案 3 :(得分:0)
您需要创建自己的自定义列表视图和自定义适配器。
LinearLayout
作为孩子创建一个类,将您的布局展开到LinearLayout
ScrollView
。像这样:
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。