Wie zwei Adapter zu einer RecyclerView?
Ich entwickle eine android-app, in der ich bin die Speicherung von zwei unterschiedlichen Arten von Informationen, die auf 'FirebaseDatabase`.
Dann in der MainActivity
bin ich abrufen und Ihnen zeigen, um die Nutzer in einem RecyclerView
. Beide Informationen sollen gezeigt werden in unterschiedlichen layouts, D. H., die Entwürfe für die beiden von Ihnen sind anders, und das ist, warum ich habe zwei stellen zwei verschiedene Modell-Klasse und haben nun 2 verschiedene Adapter. Ich bin mit FastAdapter von @MikePenz
So, was ich gemacht habe, habe ich den adapter auf recyclerview in der gleichen Reihenfolge wie die Informationen abgerufen aus der Datenbank:
1.
public void prepareDataOfSRequests() {
gModelClass = new GModelClass(postedBy, ***, ***, ***, "error", ***, formattedTime, currentLatitude, currentLongitude, utcFormatDateTime, userEmail, userID, null, ***, itemID);
fastItemAdapter.add(0, gModelClass);
recyclerView.setAdapter(fastItemAdapter);
recyclerView.smoothScrollToPosition(0);
emptyRVtext.setVisibility(View.INVISIBLE);
}
2.
public void prepareDataOfERequests() {
eModelClass = new EModelClass(***, ***, ***, ***, "error", ***, formattedTimeE, currentLatitudeE, currentLongitudeE, utcFormatDateTimeE, userEmailE, userIDE, null, ***, ***, ***, ***, itemID);
fastItemAdapterER.add(eventRequestsModelClass);
recyclerView.setAdapter(fastItemAdapterER);
recyclerView.smoothScrollToPosition(0);
emptyRVtext.setVisibility(View.INVISIBLE);
}
als die recyclerview ist nur eine und ich werde 2 verschiedene Adapter einzeln, die recyclerview ist immer aktualisiert mit dem 2. adapter und zeigt nur den Inhalt.
So, wie kann ich zeigen, oder legen Sie den adapter an den gleichen "RecyclerView" und zeigen die Inhalte, die in beiden der Adapter.
- Sie tun kann zwei Arten von viewholder und Fragen Sie nach einem interface... wenn das Einzelteil ist ein class1 zeichnen viewholder1 sonst viewholder2
- aber ich habe beide von Ihnen in der recyclerview. Ich denke, dein code zeigt entweder eine. Richtig?
- Nein, du hast sowohl du juste überschreiben müssen, von getitemcount
- oh okay... bro, kannst du bitte den code schreiben, eigentlich bin ich nicht sehr Professionell in allem, so dass es schwer zu verstehen ist. Es wäre toll, wenn Sie code schreiben, als Antwort. Bitte.
- Jedynak als schon schneller als ich
- aber er hat überschreiben
getItemViewType()
und Sie sagte zu überschreibengetItemCount()
. - ich weiß nicht, warum ich sagte, dass, wenn Sie fügen Sie die zwei Listen zusammen Ihre itemcount wird richtig sein.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht zwei Adapter auf einer RecyclerView. Allerdings können Sie einen benutzerdefinierten Adapter, der Griffe zwei Arten von Elementen. Hier ist, wie:
Nehmen wir an, Sie brauchen, um Objekte anzuzeigen, die von zwei Arten Einezu das und Beverages. Wir behandeln das schwierigste Szenario ist, Ihre Objekte erfordern ganz unterschiedlichen layouts anzeigen lassen und völlig unterschiedliche
ViewHolders
. Hier sind dieViewHolders
:Zuerst fügen Sie Konstanten, um den adapter mit Ihrer anzeigen-Typen:
Der Einfachheit halber nehmen wir an, Sie speichern Ihre Objekte in einer Liste:
Ersten, die Sie implementieren müssen
getItemViewType
:Als Nächstes verwenden Sie den Element-Typ innerhalb
onCreateViewHolder
:Schließlich binden Sie die richtigen anzeigen-Halter:
getItemViewType
. Und dann inonCreateViewHolder
einfach aufblasenviewType
im parameter der Methode.Wenn Sie möchten, können Sie definitiv schreiben Sie eine mittlere Schicht zu akzeptieren mehrere adapter.
Können Sie einen Blick auf das, was ich tun, wenn Sie interessiert sind in.
https://github.com/Jintin/MixAdapter