RecyclerView mit verschiedenen Cardlayouts

Was würde ich gerne machen


Im Moment spiele ich mit RecyclerView und CardView . Im Moment habe ich einen RecyclerView.Adapter auf dem ich das gleiche CardView mehrmals mit unterschiedlichem Inhalt anzeigen kann – analog zum ListView mit einem BaseAdapter .

  • Wie kann ich Text von WhatsApp aus meiner App teilen?
  • Android Adb Shell - Asche oder Ksh?
  • Der beste Weg, um bezahlt zu haben und kostenlose Version einer Android-App
  • So erstellen Sie vertikal ausgerichtetes Hochgestellt und tief in TextView
  • ORM auf Android SQLite und Datenbank-Schema
  • Login Fehler: Es liegt ein Fehler bei der Protokollierung in dieser Anwendung vor. Bitte versuchen Sie es später noch einmal
  • Jetzt möchte ich eine RecyclerView mit verschiedenen CardView-Layout schreiben (im Stil von Google Now). Ich habe schon nach Tutorials gesucht, fand aber nichts Nützliches zu diesem Thema. Weiß jemand, wie muss das umgesetzt werden? Was muss getan werden, um das zu erkennen?

  • Android SQLite: Update-Anweisung
  • Benutzerdefinierter Kontoauthentiker. Die Bereinigung nach dem Entfernen des Kontos erfolgt
  • Android ClassCast Ausnahme beim Binden an Service
  • FindViewById () gibt null für benutzerdefinierte Komponenten im Layout-XML zurück, nicht für andere Komponenten
  • Dagger 2 auf Android: Injizieren Sie die gleiche Abhängigkeit in Aktivität und behalten Sie Fragment
  • Green DAO vs ORM lite vs Active Android
  • One Solution collect form web for “RecyclerView mit verschiedenen Cardlayouts”

    Um zu erreichen, was Sie wollen, müssen Sie getItemViewType(position) auf Ihrem RecyclerView.Adapter überschreiben, wo Sie ein int , was Sie sagen, welche Art von Ansicht verwendet wird, um diese Position darzustellen.

    Als nächstes werden Sie verschiedene ViewHolders auf createViewHolder (parent,viewType) die die Referenzen auf jede einzelne CardLayout in Ihrem Fall behalten werden.

    Dann auf bindViewHolder(holder, position) Sie eine switch-Anweisung erstellen oder wenn sonst Fälle, um durch die Liste der möglichen Ansichten zu gehen und sie mit Daten zu füllen.

    Beispielcode unten:

     public GeneralViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { GeneralViewHolder holder; View v; Context context = viewGroup.getContext(); if (viewType == FIRST_TYPE) { v = LayoutInflater.from(context) .inflate(R.layout.first_card, viewGroup, false); holder = new FirstTypeViewHolder(v); //Of type GeneralViewHolder } else { v = LayoutInflater.from(context) .inflate(R.layout.second_card, viewGroup, false); holder = new SecondTypeViewHolder(v); } return holder; } public void onBindViewHolder(GeneralViewHolder viewHolder, int i) { if(getItemViewType(i)==FIRST_TYPE) { FirstTypeViewHolder holder1 = (FirstTypeViewHolder)viewHolder; } else { SecondTypeViewHolder holder1 = (SecondTypeViewHolder)viewHolder; } } public int getItemViewType (int position) { //Some logic to know which type will come next; return Math.random()<0.5 ? FIRST_TYPE : SECOND_TYPE; } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.