2011-01-10 2 views
5

Друзья,Как сохранить положение полосы прокрутки в списке андроидов?

Я показываю массив в ListView.

меняет данные массива динамически на кнопку мыши и вызвать

adapter.notifyDataSetInvalidated(); 

Он не поддерживает полосы прокрутки позиции списка. (длина источника данных для списка всегда одинакова). Может ли кто-нибудь помочь мне сохранить последнее состояние ListView?

Любая помощь будет оценена по достоинству.

ответ

10

Попробуйте это:

//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

, пожалуйста, исправьте код или непонятно, что это такое? это как если (vfirst! = null) – UMAR

+0

исправлен код. Дайте мне знать –

+2

tiny error в коде: 'v.getTop()' должно быть 'vfirst.getTop()' – BenjaminButton

3

Если вы хотите, чтобы обновить некоторые изменения в данных, используйте

notifyDataSetChanged(); 

Вместо. И прокрутка будет в том же положении.

Смежные вопросы