Warum muss ich Adapter.notifyDataSetChanged () nicht verwenden?

9

Das contactsList ist leer, bis die readContacts() -Methode ausgeführt wurde, mit anderen Worten, wenn contactsView.setAdapter(adapter) ausgeführt wurde, ist contactsList leer. Warum kann dieser Code die Informationen von Kontakten immer noch korrekt anzeigen?

%Vor%

aber wenn ich so etwas hinzufüge, muss ich notifyDataSetChanged() :

aufrufen %Vor%

add ist die Schaltfläche. jetzt, dass der Android die Methode automatisch aufrufen würde, warum, wenn die adapter.notifyDataSetChanged(); entfernen, konnte die UI nicht aktualisieren?

    
HungryMilk 16.01.2016, 12:04
quelle

3 Antworten

0

Der Punkt ist, dass Sie Daten in einen Auftrag eingeben, dh wenn Sie einen Gegenstand in die Liste geschoben haben, geht er ganz nach unten, Sie haben ihn nicht am 4., 5., beliebigen Index eingegeben, so dass Sie nicht müssen Rufen Sie notifyDataSetChanged() auf, da die Definition selbst besagt: dass einige Daten geändert wurden oder eine View, die den Datensatz widerspiegelt, sich selbst aktualisiert, damit die neuen Daten in der Liste sichtbar werden. Da in diesem Fall die Daten außerhalb des Bereichs der sichtbaren Liste liegen, dh die Anzahl der untergeordneten Elemente in der Liste, so dass sie (ListView) immer die next Ansichten nach dem zuletzt angezeigten Index aufruft Wert (Element) in der ListView.!

Hoffe, ich habe es dir ein bisschen klar gemacht ...!

+++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ Beantworte, nachdem du die Frage bearbeitet hast, nachdem du meine Gedanken und mein Verständnis in dieser Hinsicht durchsucht hast:

Im ersten Fall mussten keine Änderungen für VIEW vorgenommen werden. Wenn Ihnen dieser Punkt klar ist, dann kommen Sie auf den zweiten. Zuerst holten Sie Daten aus der DB und fügten dann ein Element in die Liste ein und füllten es dann nach dem Einstellen des Adapters. !! Adapter wurde erst gesetzt, wenn die gesamte Methode ausgeführt und die Liste vervollständigt wurde. OK.

Aber im zweiten Szenario ändern Sie die VIEW (so ziemlich alles ist View in android), also manipulieren Sie eine View, indem Sie ein weiteres Element in der bereits befüllten View hinzufügen (die bereits einen Satz hat) -tead-Adapter), so müssen Sie dieses Mal die Ansicht, dass hey, ich habe ein Element in Sie hinzugefügt haben, jetzt aktualisieren Sie sich aktualisieren Sie dann die Liste (dh Display).

    
Muhammad Faisal Hyder 16.01.2016, 19:01
quelle
1

Diese Methode wird intern im Android-Framework aufgerufen. Sie müssen es nicht explizit aufrufen.

Quelle: Ссылка

    
Lilylakshi 16.01.2016 12:48
quelle
0

Zusätzlich zu Lilys Antwort müssen Sie, wenn Sie Ihren eigenen Adapter schreiben, diesen explizit aufrufen.

    
prakharsingh95 16.01.2016 18:43
quelle