wake-up-neo.net

Native AdMob-Anzeige in eine ListView einfügen

Ich möchte die neue native AdMob-Anzeigenfunktion in meiner App verwenden. Ich möchte eine native Anzeige in eine ListView einfügen, in der jeder 20. Eintrag in der Liste eine Anzeige ist. Kann man dies mit einer Native Express-Anzeige erreichen? Oder muss ich eine Natve Advanced-Anzeige verwenden?

10
AcFreeman

Nun, @Jagjit hat den richtigen Ansatz gezeigt. Ich werde es Schritt für Schritt schreiben.
1. Erstellen Sie Ihren eigenen benutzerdefinierten Adapter (durch Erweitern von BaseAdapter), der als Listenansichtselemente angezeigt wird
2. Erstellen Sie eine andere Layoutressourcendatei zum Anzeigen der nativen Anzeige (das Design sollte dem benutzerdefinierten Adapter ähneln, der im obigen Schritt erstellt wurde)
3. Gehen Sie in der getView-Methode wie folgt vor (um die Anzeige an der zweiten Position anzuzeigen)

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 ist Ihr benutzerdefinierter Adapter my_custom_list
Die Anzeigen werden geladen. Es gibt jedoch ein kleines Problem, das tatsächliche Listenelement an Position 1 wird nicht angezeigt.
4. Fügen Sie der Liste ein zusätzliches Element hinzu, bevor Sie ListView auffüllen. Ich habe ArrayList verwendet, damit ich es leicht machen konnte. Mein Ansatz ist wie folgt

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

Ich schätze Admobadapter lib ist das, wonach Sie suchen ... es wickelt Ihren Adapter so ein, dass er Anzeigenblöcke in jedem X-Element in Ihrer Listenansicht oder im Recycling-Fenster automatisch abruft und anzeigt. Sie tun es einfach wie folgt: 1. Setup-Wrapper des geeigneten Typs (es gibt im Wesentlichen 4 Wrapper - für eine Listenansicht, für eine Recyclingansicht, um erweiterte Anzeigen und zwei für Express-Anzeigen anzuzeigen) 2. Injizieren Sie Ihren Adapter in den Wrapper 3. Injizieren Sie den Wrapper in die Listenansicht/das Recyclingverzeichnis 4. Füllen Sie den Adapter mit Ihren Daten auf, und erhöhen Sie onDataSetChanged (). Der Wrapper erledigt dann das Zeug selbst.

Außerdem werden native Anzeigen von Express und native Anzeigen von Advanced unterstützt. Laut dieser Ausgabe werden sie demnächst eine Maven/Gradle-Unterstützung hinzufügen. Viel Glück!

2
kot331107

Der Ansatz besteht darin, BaseAdapter zu erweitern und einen eigenen benutzerdefinierten Adapter zu erstellen, anstatt den Standard-ArrayAdapter zu verwenden. Dann müssen Sie eine "Anzeigenansicht" anstelle der normalen Ansicht zurückgeben, wenn Sie eine Anzeige anzeigen möchten. Das bedeutet, dass Sie getCount () überschreiben müssen, um weitere 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 diese Ansicht erstellt werden soll. Ich denke, Sie können dies tun, 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, dass dies am besten ist, bis ich hoffe, dafür einen optimierten Weg zu finden

2
Jagjit Singh

Sie müssen eine eigene Listenansicht und einen benutzerdefinierten Adapter erstellen.

  1. Erstellen Sie eine Bildlaufansicht und eine LinearLayout als untergeordnetes Element
  2. Erstellen Sie Ihre Vorlage als XML-Layout, das Ihren Inhalt verarbeiten kann
  3. Erstellen Sie eine Klasse, mit der Sie Ihr Layout in LinearLayout in ScrollView aufpumpen können. So was :

    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 erstelle ich ein leeres Element und füge es hinzu 

  4. Sie können die ADS in LinearLayout als untergeordnetes Element hinzufügen.

0
Hakim Douib