2010-04-29 3 views
4

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

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

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

спасибо.

+0

Правильное [решение] (http://stackoverflow.com/questions/12727594/android-listview-current-scroll-location-y-pixels/35594825#35594825) – Sarasranglt

ответ

2

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

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

@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); 
} 

удачи!

+1

Возможно, вы имеете в виду getSelectedItemPosition(), нет метода GetSelection() –

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