2011-01-10 7 views
5

Freunde,wie scroll bar position in android listview zu pflegen?

Ich zeige ein Array in ListView.

I-Daten-Array dynamisch ändern auf die Schaltfläche klicken und rufen

adapter.notifyDataSetInvalidated(); 

Es ist nicht Bildlaufleiste Position der Liste nicht halten. (Die Länge der zu listenden Datenquelle ist immer gleich). Kann mir jemand helfen, den letzten Status von ListView beizubehalten?

Jede Hilfe wäre willkommen.

Antwort

10

Versuchen Sie folgendes:

//Get the top position from the first visible element 
int idx = list.getFirstVisiblePosition(); 
View vfirst = list.getChildAt(0); 
int pos = 0; 
if (vfirst != null) pos = vfirst.getTop(); 

//Restore the position 
list.setSelectionFromTop(idx, pos); 
+0

Bitte korrigieren Sie den Code oder es ist nicht verständlich, was ist v hier? ist es wie wenn (vfirst! = null) – UMAR

+0

Code behoben. Lassen Sie es mich wissen –

+2

winzigen Fehler im Code: 'v.getTop()' sollte 'vfirst.getTop()' sein – BenjaminButton

3

Wenn Sie nur ein paar Änderungen in Daten aktualisieren möchten, verwenden Sie

notifyDataSetChanged(); 

statt. Und scroll wird in der gleichen Position sein.