好吧@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)
方法是扩展 BaseAdapter 并创建您自己的自定义 Adapter,而不是使用默认的 ArrayAdapter。然后,当您想要展示广告时,您需要返回 \xe2\x80\x9cAd\xe2\x80\x9d View 而不是通常的普通 View。这意味着您需要重写 getCount() 以返回更多行(例如,如果您有 10 行,则意味着您需要返回 11 = 10 个实际内容 + 1 个广告)
\n\n然后你需要决定在哪个位置创建这个View,我认为你可以通过简单地检查位置变量来完成:
\n\nif (position == VALUE) {\n // Create and return Ad View \n} else {\n // Create and return a normal View \n}\nRun Code Online (Sandbox Code Playgroud)\n\n希望能帮助到你。我发现这是最好的,但希望找到更好的优化方法
\n| 归档时间: |
|
| 查看次数: |
15324 次 |
| 最近记录: |