2016-06-01 7 views
8

Ich möchte die neue native AdMob-Anzeigenfunktion in meiner App verwenden. Ich möchte eine native Anzeige in einem listView platzieren, wobei jedes 20. Element in der Liste eine Anzeige ist. Ist es möglich, dies mit einer Native Express Ad zu erreichen? Oder muss ich eine Natve Advanced Ad verwenden?Eine native AdMob-Anzeige in eine ListView einfügen

Antwort

2

Der Ansatz besteht darin, BaseAdapter zu erweitern und Ihren eigenen benutzerdefinierten Adapter zu erstellen, anstatt den Standard-ArrayAdapter zu verwenden. Dann müssen Sie eine "Anzeigen" -Ansicht anstelle Ihrer üblichen normalen Ansicht zurückgeben, wenn Sie eine Anzeige anzeigen möchten. Das bedeutet, dass Sie getCount() überschreiben müssen, um mehr Zeilen zurückzugeben (wenn Sie beispielsweise 10 Zeilen haben, müssen Sie 11 = 10 tatsächlichen Inhalt + 1 Anzeige zurückgeben)

Dann müssen Sie entscheiden, in welcher Position um diese Ansicht zu erstellen, denke ich, dass Sie es tun können, indem Sie einfach die Positionsvariable überprüfen:

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

Ich hoffe, es hilft. Ich fand das als bestes, bis ich hoffe, einen besser optimierten Weg zu finden.

3

Nun @Jagjit hat den richtigen Ansatz gezeigt. Ich werde es Schritt für
1. Erstellen Sie Ihre eigenen Adapter (durch Verlängerung BaseAdapter), die als Listenansicht Artikel gezeigt wird Schritt schreiben
2. ein anderes Layout Ressourcendatei erstellen für die Ansicht native Anzeigen (Design sollte das ähnlich sein benutzerdefinierte Adapter in obigem Schritt erstellt)
3. im getView Methode etwas tun, wie folgt (bei zweiter Position zeigt ad)

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); 
    ... 
    ... 
} 

Hier Ihr kundenspezifischen Adapter ist my_custom_list
Sie werden sehen, dass die Anzeigen geladen werden. Aber es gibt ein kleines Problem, der tatsächliche Punkt der Liste an Position 1 wird nicht angezeigt.
4. Fügen Sie vor dem Auffüllen der ListView ein zusätzliches Element zur Liste hinzu. Ich habe ArrayList verwendet, damit ich es leicht machen konnte. Mein Ansatz ist als

arrayList1.add(1,"ad here"); 
listview1.setAdapter(new MyAdapter(callerView.getContext(), arrayList1.toArray(new String[arrayList1.size()]))); 
+0

Können Sie uns bitte die volle Klasse als Beispiel geben (AdapterClass und das Layout). Das wäre wirklich nützlich! – basti12354

+0

BTW die ** my_custom_list ** ist kein Adapter, sondern eine ID aus der XML-Ansicht aufgrund Ihres Codes :) – kot331107

+0

my_custom_list ist eine XML-Datei, die als Adapter erstellt wurde, es ist keine einzelne Ansicht, sondern die gesamte Designdatei (die Adapter, der zur Laufzeit aufgeblasen wird) –

2

folgt Ich denke, Admobadapter lib ist das, was Sie suchen ... es hüllt Ihr Adapter automatisch holen und zeigen Anzeigenblocks in jedem X Artikel im Listview oder recyclerview. Sie tun es einfach wie folgt: 1. Setup-Wrapper von geeignetem Typ (es gibt im Grunde 4 Wrapper - für eine Listview, für eine Recyclerview, um Advanced-Anzeigen und 2 für Express-Anzeigen zu zeigen) 2. injizieren Sie Ihren Adapter in den Wrapper 3. inject Wrapper in die Listview/recyclerview 4. füllen Sie Ihren Adapter mit Ihren Daten, erhöhen onDataSetChanged() dann wird der Wrapper das Zeug selbst tun.

Es unterstützt auch Express native Anzeigen und erweiterte native Anzeigen. Nach dieser issue werden sie bald einen Maven/Gradle-Support hinzufügen. Viel Glück!

0

Sie müssen Ihre eigene benutzerdefinierte Listenansicht und benutzerdefinierten Adapter erstellen.

  1. eine Scroll-Ansicht erstellen und ein LinearLayout als Kind
  2. als XML-Layout erstellen Sie Ihre Vorlage, die Ihren Inhalt
  3. Erstellen Sie eine Klasse behandelt, die auf die LinearLayout Im ScrollView in inflat Ihr Layout wird. Wie folgt aus:

    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 diesem Code erstellen i ein leeres Element und fügen Sie es

  4. Sie die ADS im LinearLayout als Kind hinzufügen.

Verwandte Themen