Ich habe Probleme mit notifyDataSetChanged () eines BaseAdapters. Diese Methode wird in refreshItems () aufgerufen und soll den BaseAdapter meiner ListActivity aktualisieren. Beim Aufruf von notifyDataSetChanged () passiert nichts, bis ich zum Beispiel mit den Pfeiltasten die ListView herunterscrolle. Irgendwie wird die modifizierte Methode getView () auch nicht aufgerufen. Vielleicht kannst du mir einen Tipp geben - danke! :)
%Vor%}
Ich hatte das gleiche Problem (ListView Updates nur, wenn ich es scrollen, auch notifyDataSetChanged hat nicht geholfen). Ich löse es auf diese Weise: versuchen Sie einfach, Ihre "Ansicht Änderungen" in Thread, der Ihre Benutzeroberfläche erstellt, d. h.
%Vor% Wie Franco darauf hingewiesen hat, wird notifyDataSetChanged()
verwendet, um dem ListView
mitzuteilen, dass sich der Inhalt seines Adapters geändert hat, und nicht, dass er sich neu zeichnen muss. Sie ändern nur eine Einstellung, die beeinflusst, wie etwas gerendert wird. Versuchen Sie, refreshDrawableState aufzurufen, damit die Liste neu gezeichnet wird.
Ich hatte das gleiche Problem, und die Lösung für mich bestand darin, requestLayout aufzurufen () auf der ListView.
Rufen Sie AbsListView.invalidateViews () auf Ihrer Listenansicht nach BaseAdapter auf .notifyDataSetChanged ()
Ich habe das gleiche Problem festgestellt, und ich habe versucht, notifyDataSetChanged()
auf dem Adapter aufzurufen. Außerdem habe ich versucht, refreshDrawableState()
, invalidateViews()
in der Ansicht aufzurufen, und keiner von denen hat funktioniert. Alle diese Methoden werden im UI-Thread aufgerufen. Dann fand ich das Wie lösche ich die Ansichten, die im RecycleBin der ListView gespeichert sind? . Schließlich funktioniert setAdapter()
nur, wenn ich einen neuen Adapter erstelle.
Der Hauptgrund dafür ist die falsche Referenz des Adapters, auf dem Sie notifyDataSetChanged ();
aufrufenIch denke, Sie müssen sicherstellen, dass Sie das Adapterobjekt einmal erstellen und notifyDataSetChanged () für dasselbe Objekt aufrufen.
Sie können den Objektreferenzwert bei der Erstellung des Adapterobjekts und beim Aufruf der notifyDataSetChanged () - Methode debuggen.
--- Weil Sie die Werte auf temp List setzen und den Adapter übergeben und es in listview zeigt.
%Vor%--- Weil Sie die Temperatur auf den Adapter weit einstellen, bevor Sie den Wert in temp setzen Zweitens erhält Ihre Adapterklasse möglicherweise nicht den aktualisierten Wert, wenn Sie einen neuen Wert auf temp .. setzen, da temp nicht öffentlich oder nicht auf Klassenebene oder nicht statisch ist. Setzen Sie die temp-Deklaration auf Stammebene und versuchen Sie es.
Und bitte zeigen Sie Ihren vollständigen Code so oft wie erforderlich und Logcat, wenn Sie Warnungen erhalten als auch.
Tags und Links android