Vorrei utilizzare la nuova funzionalità di annunci nativi di AdMob nella mia app. Voglio mettere un annuncio nativo all'interno di un listView, dove ogni 20 ° elemento o giù di lì nell'elenco è un annuncio. È possibile raggiungere questo obiettivo con un annuncio nativo Express? O devo usare un annuncio avanzato natve?Inserimento di un annuncio nativo AdMob in una listaVista
risposta
L'approccio consiste nell'estendere BaseAdapter e creare il proprio adattatore personalizzato, anziché utilizzare l'ArrayAdapter predefinito. Quindi è necessario restituire una vista "Annuncio" anziché la normale visualizzazione normale quando si desidera visualizzare un annuncio. Ciò significa che devi eseguire l'override di getCount() per restituire più righe (ad esempio se hai 10 righe, significa che devi restituire 11 = 10 contenuto effettivo + 1 annuncio)
Quindi devi decidere in quale posizione per creare questa vista, penso che puoi farlo semplicemente controllando la variabile di posizione:
if (position == VALUE) {
// Create and return Ad View
} else {
// Create and return a normal View
}
Spero che aiuti. Ho trovato questo come meglio fino a quando spero di trovare il modo migliore ottimizzato per questo
Well @ Jagjit ha mostrato il giusto approccio. Scriverò un passo alla volta
1. Creare il proprio adattatore personalizzato (estendendo BaseAdapter
), che verrà mostrato come oggetti ListView
2. Creare un altro file di risorse di layout per la visualizzazione di annunci nativi (design dovrebbe essere simile a quello adattatore personalizzata creata nel passaggio)
3. nel metodo getView
fare qualcosa nel modo seguente (per mostrare annuncio al 2 ° posizione)
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);
...
...
}
Ecco la scheda personalizzata è my_custom_list
Vedrai che gli annunci stanno caricando. Ma c'è un piccolo problema, la voce reale della lista in posizione 1 non verrà mostrata.
4. Per questo, aggiungere un elemento in più all'elenco prima di compilare lo ListView
. Ho usato ArrayList
così ho potuto farlo facilmente. Il mio approccio è il seguente
arrayList1.add(1,"ad here");
listview1.setAdapter(new MyAdapter(callerView.getContext(), arrayList1.toArray(new String[arrayList1.size()])));
Credo Admobadapter lib è quello che state cercando ... si avvolge l'adattatore per recuperare automaticamente e blocca Visualizza l'annuncio in ogni oggetti X nel vostro ListView o recyclerview. Basta farlo come segue: 1. wrapper di installazione di tipo adatto (ci sono fondamentalmente 4 wrapper - per un listview, per un recyclerview per mostrare annunci avanzati e 2 per annunci Express) 2. inserire l'adattatore nel wrapper 3. Iniettare il wrapper a listview/recyclerview 4. riempire il proprio adattatore con i dati, aumentare su DataSetChanged(), quindi il wrapper eseguirà il materiale stesso.
Supporta anche annunci nativi Express e annunci nativi avanzati. Secondo questo issue, aggiungeranno presto un supporto Maven/Gradle. In bocca al lupo!
È necessario creare una vista elenco personalizzata e un adattatore personalizzato.
- Creare una vista di scorrimento e un
LinearLayout
come figlio - creare il modello come file XML di layout che consente di gestire i tuoi contenuti
Creare una classe che sarà in inflat vostro layout per il
LinearLayout
NelScrollView
. Come questo: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); }
in questo codice creo un elemento vuoto e aggiungerlo
È possibile aggiungere gli annunci contenuti nella
LinearLayout
come un bambino.
Potete per favore darci la classe completa come esempio (AdapterClass e il layout). Questo sarebbe davvero utile! – basti12354
BTW il ** my_custom_list ** non è un adattatore ma un ID dalla vista XML a causa del codice :) – kot331107
my_custom_list è un file XML creato come adattatore, non è una vista singola, ma l'intero file di disegno (il adattatore con runtime gonfiato) –