将AdMob原生广告放入listView

AcF*_*man 12 android listview ads admob

我想在我的应用中使用新的AdMob原生广告功能.我想在listView中放置原生广告,其中列表中的每20个项目都是一个广告.是否有可能通过Native Express广告实现这一目标?或者我必须使用Natve高级广告吗?

Bib*_*yay 8

好吧@Jagjit 已经展示了正确的方法。我会一步一步写出来
1. 创建你自己的自定义适配器(通过扩展BaseAdapter),它将显示为列表视图项
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);
    ...
    ...
}
Run Code Online (Sandbox Code Playgroud)

您的自定义适配器在这里my_custom_list
您会看到广告正在加载。但是有一个小问题,第 1 位列表的实际项不会显示。
4. 为此,在填充ListView. 我已经使用过,ArrayList所以我可以轻松完成。我的做法如下

arrayList1.add(1,"ad here");
listview1.setAdapter(new MyAdapter(callerView.getContext(), arrayList1.toArray(new String[arrayList1.size()])));
Run Code Online (Sandbox Code Playgroud)


Jag*_*ngh 2

方法是扩展 BaseAdapter 并创建您自己的自定义 Adapter,而不是使用默认的 ArrayAdapter。然后,当您想要展示广告时,您需要返回 \xe2\x80\x9cAd\xe2\x80\x9d View 而不是通常的普通 View。这意味着您需要重写 getCount() 以返回更多行(例如,如果您有 10 行,则意味着您需要返回 11 = 10 个实际内容 + 1 个广告)

\n\n

然后你需要决定在哪个位置创建这个View,我认为你可以通过简单地检查位置变量来完成:

\n\n
if (position == VALUE) {\n   // Create and return Ad View \n} else {\n   // Create and return a normal View \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

希望能帮助到你。我发现这是最好的,但希望找到更好的优化方法

\n