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 .

  • Bestes Java Datastructure zum Speichern von Schlüssel Value Pair
  • Wie können Sie sagen, wann ein Layout gezeichnet wurde?
  • Picasso und Kontext
  • Wie kann ich die Höhe der Android-Spinner-Artikel verwalten?
  • Ausführung fehlgeschlagen für Aufgabe ': app: transformClassesAndResourcesWithProguardForRelease
  • Wie bekomme ich die richtigen Grenzen eines Blickes nach der Transformation Matrix
  • 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?

  • Beim Abbrechen der Bluetooth-Server-Steckdose vor der Annahme, der ganze Prozess stirbt. Warum?
  • Benutzerdefinierte Präferenz, targetSdkVersion = "11": fehlender Einzug?
  • Berechnen Sie Abstand zwischen Bluetooth-Gerät in Android
  • Wie lade ich große Bilder in Android und vermeide den Fehler aus dem Speicher?
  • Android ListView - Stoppen Sie das Blättern in der 'ganzen' Zeilenposition
  • Wie wird der Whatsapp-Service neu gestartet, auch wenn ich die App-App erzwinge?
  • 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.