Нужна помощь в использовании getScrollY () ListView - PullRequest
4 голосов
/ 29 апреля 2010

У меня есть следующий код, который записывает позицию прокрутки Y в моем ListView, когда моя деятельность приостановлена.

protected void onSaveInstanceState (Bundle outState) {
 super.onSaveInstanceState(outState); 
 int scroll = mListView.getScrollY(); 
 System.out.println (" scrollY" + scroll);
} 

Но независимо от того, где я прокручиваю свой ListView по вертикали, значение getScrollY () всегда возвращает 0. Может кто-нибудь помочь мне?

Спасибо.

1 Ответ

2 голосов
/ 07 мая 2010

ListView.getScrollY() возвращает 0, потому что вы сами не прокручиваете ListView, а View внутри. Вызов getScrollY () для любого из представлений, которые вы прокручиваете, возвращает фактические значения (только до некоторой степени, поскольку они перерабатываются).

Чтобы сохранить свою позицию, попробуйте следующее:

@Override
protected void onSaveInstanceState (Bundle outState) {
  super.onSaveInstanceState(outState); 
  int scrollPos = mListView.getSelectedItemPosition(); 
  outState.putInt("MyPosition", scrollPos);
} 

@Override
public void onRestoreInstanceState(Bundle inState) {
  super.onRestoreInstanceState(inState);
  int scrollPos = inState.getInt("MyPosition");
  mListView.setSelection(scrollPos);
}

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...