Es ist immer effizienter, spezifischere Änderungsereignisse zu verwenden, wenn Sie können. Verlassen Sie sich als letzten Ausweg auf NotifyDataSetChanged. RecycleView

Lesezeit: 2 Minuten

Benutzeravatar von Mostafa Onaizan
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

Bearbeitungsfrage: die wollen wir verwenden

DiffUtil Dokumente

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

  1. benachrichtigenItemChanged(int)
  2. benachrichtigenItemInserted(int)
  3. benachrichtigenItemRemoved(int)
  4. benachrichtigenItemRangeChanged(int, int)
  5. benachrichtigenItemRangeInserted(int, int)
  6. 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.

1443160cookie-checkEs ist immer effizienter, spezifischere Änderungsereignisse zu verwenden, wenn Sie können. Verlassen Sie sich als letzten Ausweg auf NotifyDataSetChanged. RecycleView

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy