アプリで新しいAdMobネイティブ広告機能を使用したいのですが。ネイティブ広告をlistView内に配置したいのですが、リスト内の約20アイテムごとが広告です。ネイティブエクスプレス広告でこれを実現することは可能ですか?または、Natve Advanced Adを使用する必要がありますか?
まあ@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);
...
...
}
ここにあなたのカスタムアダプタはmy_custom_list
広告が読み込まれていることがわかります。しかし、小さな問題があります。位置1のリストの実際のアイテムは表示されません。
4。そのためには、ListView
に入力する前にリストにアイテムを追加します。 ArrayList
を使用したので、簡単に実行できました。私のアプローチは次のとおりです
arrayList1.add(1,"ad here");
listview1.setAdapter(new MyAdapter(callerView.getContext(), arrayList1.toArray(new String[arrayList1.size()])));
私が思うに Admobadapter lib はあなたが探しているものです...それはアダプターをラップして、リストビューまたはリサイクラービューのすべてのXアイテムの広告ブロックを自動的にフェッチして表示します。次のように行います。1.適切なタイプのラッパーをセットアップします(基本的に4つのラッパーがあります-リストビュー用、リサイクラービュー用にアドバンスド広告を表示し、2つはエクスプレス広告用です)2.アダプターをラッパーに挿入します3.インジェクトしますlistview/recyclerviewへのラッパー4.アダプターにデータを入力し、onDataSetChanged()を発生させます。ラッパー自体が処理を実行します。
また、エクスプレスネイティブ広告とアドバンスネイティブ広告もサポートしています。これによると issue 彼らはまもなくMaven/Gradleサポートを追加する予定です。幸運を!
アプローチは、デフォルトのArrayAdapterを使用する代わりに、BaseAdapterを拡張して独自のカスタムアダプタを作成することです。次に、広告を表示する場合は、通常の通常のビューではなく「広告」ビューを返す必要があります。これは、より多くの行を返すにはgetCount()をオーバーライドする必要があることを意味します(たとえば、10行ある場合、11 = 10実際のコンテンツ+ 1広告を返す必要があります)
次に、このビューを作成する位置を決定する必要があります。位置変数を確認するだけで実行できると思います。
if (position == VALUE) {
// Create and return Ad View
} else {
// Create and return a normal View
}
それが役に立てば幸い。私はこれが最善であると思っていましたが、これのためのより最適化された方法を見つけることを望んでいます
独自のカスタムリストビューとカスタムアダプターを作成する必要があります。
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を子として追加できます。