Android 将AdMob本机广告放入列表视图

Android 将AdMob本机广告放入列表视图,android,listview,admob,ads,Android,Listview,Admob,Ads,我想在我的应用程序中使用新的AdMob本机广告功能。我想在listView中放置一个本地广告,列表中大约每20个项目都是一个广告。是否可以使用本地Express广告实现这一点?或者我必须使用Natve Advanced Ad吗?方法是扩展BaseAdapter并创建自己的自定义适配器,而不是使用默认的ArrayAdapter。然后,当您想要显示广告时,您需要返回一个“广告”视图,而不是通常的普通视图。这意味着您需要重写getCount()以返回更多行(例如,如果您有10行,则意味着您需要返回11

我想在我的应用程序中使用新的AdMob本机广告功能。我想在listView中放置一个本地广告,列表中大约每20个项目都是一个广告。是否可以使用本地Express广告实现这一点?或者我必须使用Natve Advanced Ad吗?

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

然后您需要决定在哪个位置创建此视图,我认为您只需检查position变量即可:

if (position == VALUE) {
   // Create and return Ad View 
} else {
   // Create and return a normal View 
}

希望能有帮助。我发现这是迄今为止最好的方法,希望能找到更好的优化方法。

那么@Jagjit已经展示了正确的方法。我会一步一步地写
1.创建您自己的自定义适配器(通过扩展
BaseAdapter
),它将显示为listview项
2.创建另一个布局资源文件以显示本机广告(设计应类似于在上述步骤中创建的自定义适配器)
3.在
getView
方法中,执行以下操作(用于在第二位置显示广告)

这里是您的自定义适配器
my\u custom\u list

你会看到广告正在加载。但是有一个小问题,位置1的列表的实际项目将不会显示。
4.为此,在填充
列表视图之前,向列表中添加一个额外的项。我使用了
ArrayList
,因此我可以轻松地完成它。我的做法如下

arrayList1.add(1,"ad here");
listview1.setAdapter(new MyAdapter(callerView.getContext(), arrayList1.toArray(new String[arrayList1.size()])));
我猜这就是你要找的…它包装了你的适配器,在listview或recyclerview中的每个X项中自动获取和显示广告块。您只需按如下方式进行操作: 1.设置合适类型的包装器(基本上有4个包装器-用于listview、用于显示高级广告的recyclerview和用于快速广告的2个包装器) 2.将适配器插入到包装器中 3.将包装器注入listview/recyclerview 4.用您的数据填充适配器,并引发onDataSetChanged(),然后包装器将自己完成这些工作


它还支持Express本机广告和高级本机广告。根据这一点,他们将很快添加Maven/Gradle支持。祝你好运

您需要创建自己的自定义列表视图和自定义适配器

  • 作为子对象创建滚动视图和
    线性布局
  • 将模板创建为处理内容的xml布局
  • 创建一个类,将您的布局充气到
    滚动视图中的
    线性布局
    。像这样:

    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);
    }
    
    在这段代码中,我创建一个空元素并添加它

  • 您可以将广告作为子项添加到
    线性布局中


  • 你能给我们一个完整的类作为例子(AdapterClass和布局)吗。这真的很有用!顺便说一句,my_custom_列表不是适配器,而是来自XML视图的id,因为您的代码:)my_custom_列表是作为适配器创建的XML文件,它不是单个视图,而是整个设计文件(运行时膨胀的适配器)
    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);
    }