Tut notifydatasetchanged nennen onCreateViewHolder bei der Verwendung RecyclerView
Will ich mit einem toggle zum Umschalten zwischen zwei verschiedenen Ansichten, aber mit der gleichen RecyclerView
. Grundsätzlich, wenn Sie Umschalten, ich will das RecyclerView
adapter zu erinnern onCreateViewHolder()
aber dieses mal verwenden Sie ein anderes layout-Element-Datei.
Tut notifydatasetchanged()
Ursache der adapter um sich wieder aufzubauen? Oder gibt es einen anderen Weg?
InformationsquelleAutor der Frage AmaJayJB | 2015-02-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Musste ich haben zwei Typen auf
View
s auf meinemRecyclerView
Adapter
sowie, eine für "normalen" Betrieb und eine für multi-select-Modus.So können Sie überschreiben
getItemViewType
zu zwingen, den Adapter zu rufen, IhreonCreateViewHolder
für alle Ansichten.Fügen Sie diese an die
Adapter
code:Fügen Sie diese an die
ViewHolder
:Da Sie wieder einen anderen
ViewType
wenn in einemActionMode
der Adapter ist gezwungen, Weg zu werfen alle erstellten Ansichten, und erstellen Sie wieder alles.InformationsquelleAutor der Antwort marmor
notifyDataSetChanged()
AnrufeonBindViewHolder()
im Falle vonRecyclerView
InformationsquelleAutor der Antwort Bhuvnesh Varma
Entfernen und aktualisieren-layout in
RecyclerView
sind, können Sie anrufenODER
nach dem entfernen Objekt im dataset
InformationsquelleAutor der Antwort streamride
Ja, es wird davon ausgegangen, dass seine aktuelle Datensatz ist ungültig und müsste relayout und binden alle layouts.
InformationsquelleAutor der Antwort Kevin Crain
Ich verbrachte mehr als 6 Stunden an diesem Problem, ohne Erfolg.
Endlich!!!
Setze ich eine Globale variable in den adapter, und hatte, um es einzurichten jedes mal, wenn ich umgeschaltet, die Ansicht von Liste auf Gitter (in meinem Fall). das komische Ding, das approauch war da, aber ich vergaß, es zu tun als statische!! Also meine Lösung könnte in Bezug zu Ihnen , probieren Sie es einfach und hoffe es klappt.
überschreiben dann die getItemType()
meine toggleItemViewType Methode:
Ich bin der Zugriff auf die Variablen aus verschiedenen Klassen, das ist nicht richtig, aber für das jetzt und für das wohl der onCreateViewHolder Problem, es funktionierte!
wenn Sie eine bessere Lösung, dann viel Glück und teilen Sie es uns mit.
vergessen Sie nicht, stellen Sie die Globale variable als "static" 🙂
InformationsquelleAutor der Antwort Mujtaba Mahmood