Es ist immer effizienter, spezifischere Änderungsereignisse zu verwenden, wenn Sie können. Verlassen Sie sich als letzten Ausweg auf NotifyDataSetChanged. RecycleView
Lesezeit: 2 Minuten
Mostafa Onaizan
Nach dem Update von Android Studio auf Arctic Fox erhalte ich diese Warnung. Aber ich weiß nicht, was der effiziente Weg ist, um Datenänderungen zu melden. In meinem Code fülle ich den Adapter aus dem Netzwerkaufruf und benachrichtige dann datasetchange, aber der Compiler hat mir Folgendes gegeben:
Es ist immer effizienter, spezifischere Änderungsereignisse zu verwenden, wenn Sie können. Verlassen Sie sich als letzten Ausweg auf NotifyDataSetChanged. RecycleView
anstelle von notificationDataSetChanged(), weil es viel schneller ist. Überprüfen Sie diesen Artikel auf Mittel.
Das heißt, wenn Sie die gesamte Artikelliste auf einmal in der Recycleransicht ändern müssen, dann verwenden Sie notifyDataSetChanged().
Wenn Sie das bestimmte Element ändern müssen, ist es besser, es zu verwenden notifyItemChanged(position) damit nicht das gesamte Dataset aktualisiert und neu gebunden wird, was sich auf die Leistung auswirken kann, wenn das Dataset groß ist.
Es ist also nur ein normaler Vorschlag oder vielleicht eine Warnung, kein Grund zur Sorge. 🙂
Wenn also der Adapter mit dem Cursor in der zugrunde liegenden Datenbank oder einem anderen Datenanbieter verknüpft ist, müssen wir uns dieser Warnung jederzeit stellen, wenn DataSetObserver ausgelöst wird. Hübsch…
– A. Petrow
1. Dezember 2021 um 7:40 Uhr
ja vielleicht….
– Dev4Life
1. Dezember 2021 um 16:37 Uhr
Die Funktion notifyDataSetChanged berücksichtigt im Wesentlichen, dass sich alle Daten in Ihrem Datensatz geändert haben. Dies verursacht alles VISIBLE Ansichten, die diese Daten verwenden, um neu gezeichnet zu werden. Dies ist unnötig, wenn sich nur einige Daten geändert haben.
Sie müssen die Position identifizieren, an der sich Daten geändert haben, und Ihren Adapter benachrichtigen, nur diese Elemente zu aktualisieren.
Mit diesen Methoden können Sie Änderungen der jeweiligen Position mitteilen
benachrichtigenItemChanged(int)
benachrichtigenItemInserted(int)
benachrichtigenItemRemoved(int)
benachrichtigenItemRangeChanged(int, int)
benachrichtigenItemRangeInserted(int, int)
benachrichtigenItemRangeRemoved(int, int)
Würde es nicht automatisch wissen, welches Element geändert/hinzugefügt/usw. wurde, wenn Sie einen ListAdapter verwenden? mit areItemsTheSame und areContentsTheSame, sonst sehe ich den Vorteil von ListAdapter nicht
– TootsieRockNRoll
23. September 2021 um 13:49 Uhr
Wie sieht es in Situationen aus, in denen ich nicht weiß, wie sich die Daten geändert haben? dh die Liste aus dem Internet aktualisieren? Welche Methode soll ich verwenden
– Josef Sang
1. Oktober 2021 um 9:08 Uhr
Es ist nur ein Vorschlag von Android Studio, Daten in RecyclerView zu aktualisieren.
Dieser Hinweis, um Änderungen in den Recycler-Ansichtselementen nur unter Verwendung einer bestimmten Positionsaktualisierung zu benachrichtigen, z. Int.).
benachrichtigenDataSetChanged() sollte als letztes Mittel oder als letzte Maßnahme verwendet werden. Diese Funktion wird alle Ansichten neu initialisieren und neu binden, was die Leistung beeinträchtigen kann.
14431600cookie-checkEs ist immer effizienter, spezifischere Änderungsereignisse zu verwenden, wenn Sie können. Verlassen Sie sich als letzten Ausweg auf NotifyDataSetChanged. RecycleViewyes