我有以下代码,只要我的活动暂停,就会在我的ListView中记录滚动Y位置。
protected void onSaveInstanceState (Bundle outState) {
super.onSaveInstanceState(outState);
int scroll = mListView.getScrollY();
System.out.println (" scrollY" + scroll);
}
但无论我在哪里垂直滚动ListView,getScrollY()的值总是返回0.有人可以帮助我吗?
谢谢。
答案 0 :(得分:2)
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);
}
祝你好运!