2017-10-23 1 views
0

Ich habe eine ListView mit einer ArrayAdapter, um es zu unterstützen. Aktualisierungen an der Liste umfassen normalerweise mehrere Vorgänge zum Hinzufügen/Entfernen von Elementen, gefolgt von einer Sortieroperation. Häufig entfernt das Update nur ein Objekt und fügt ein fast identisches Objekt hinzu, das schließlich am selben Ort wie das Objekt endet, das ich entfernt habe.Freeze eine ListView während der sequentiellen Updates

Wie kann ich verhindern, dass die Listenansicht während dieser Vorgänge "zuckt"? Im Idealfall möchte ich alle Neuzeichnungsvorgänge einfrieren, dann Elemente hinzufügen, entfernen und sortieren und erst dann die Benutzeroberfläche "aufheben", damit sie neu gezeichnet werden kann. Irgendeine Möglichkeit, das zu erreichen?

Antwort

1

ArrayAdapter#setNotifyOnChange() scheint wie ein Kandidat dafür. Verwenden Sie wie folgt vor:

myAdapter.setNotifyOnChange(false); 
// add, remove and sort items here 
myAdapter.notifyDataSetChanged(); 

, dass nichts anderes in dem Update-Code ruft ArrayAdapter#notifyDataSetChanged() (wie löst dabei ein erneutes Zeichnen) und Updates verzögert werden, bis die Transaktion abgeschlossen ist.

EDIT: danach versuchen, gibt es immer noch die gelegentliche Zucken, aber das auch dadurch verursacht werden kann, dass ich die ausgewählte Listenansicht Artikel (zurück) in den Blick nach jedem Update scroll.

Verwandte Themen