2016-06-01 37 views
8

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

2

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

3

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()]))); 
+0

Potete per favore darci la classe completa come esempio (AdapterClass e il layout). Questo sarebbe davvero utile! – basti12354

+0

BTW il ** my_custom_list ** non è un adattatore ma un ID dalla vista XML a causa del codice :) – kot331107

+0

my_custom_list è un file XML creato come adattatore, non è una vista singola, ma l'intero file di disegno (il adattatore con runtime gonfiato) –

2

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!

0

È necessario creare una vista elenco personalizzata e un adattatore personalizzato.

  1. Creare una vista di scorrimento e un LinearLayout come figlio
  2. creare il modello come file XML di layout che consente di gestire i tuoi contenuti
  3. Creare una classe che sarà in inflat vostro layout per il LinearLayout Nel ScrollView. 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

  4. È possibile aggiungere gli annunci contenuti nella LinearLayout come un bambino.