Ich habe eine Activity
mit einem Fragment, das eine ListView
zeigt, die einfach TextViews
enthält. Ein Menüpunkt kann über einen Intent einen weiteren Activity
auslösen. Diese neue Activity
löscht die ArrayList
, die der ArrayAdapter
für die ListView
unter Verwendung ArrayList.clear()
zugrunde liegt.Android ListView.getChildCount() größer als getCount()
Wenn ich ein Backup von den neuen Activity
zu meinem ursprünglichen einem mit den ListView
, und den vollen Kontrolle in onResume()
finde ich, dass meine ListView.getChildCount()
ist das gleiche wie wenn es aufgrund der Absicht verlassen wurde, aber die ListView.getCount()
ist jetzt richtig Null !
Ich habe versucht, mit der clear()
Methode des Adapters, habe ich versucht Adapter.notifyDataSetChanged()
(obwohl ich nicht muss).
Wenn ich die zugrunde liegende ArrayList
aus dem Fragment selbst ändern, scheint alles in Ordnung. Wenn Sie beispielsweise auf ein Element klicken, können Sie es entfernen, nach oben oder unten verschieben usw. Das funktioniert einwandfrei.
Auch, wenn ich dann die Liste Activity
verlassen und wieder darauf zurückkommen, ist alles in Ordnung. Die ArrayList ist also eindeutig dieselbe Liste. Ich erstelle nie nur eine neue Liste. clear()
es.
Eine Idee, wie die Child Count möglicherweise mehr als die zugrunde liegende Elementanzahl sein kann? Vielleicht löst eine Art Beobachter für die ArrayList
nicht aus, weil die Activity
ausgesetzt ist? In welchem Fall könnte ich sie wieder synchronisieren? Ich habe versucht invalidate()
zum Beispiel.
Dies ist unter API 23.