需要帮助使用ListView的getScrollY()

时间:2010-04-29 07:24:42

标签: android

我有以下代码,只要我的活动暂停,就会在我的ListView中记录滚动Y位置。

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

但无论我在哪里垂直滚动ListView,getScrollY()的值总是返回0.有人可以帮助我吗?

谢谢。

1 个答案:

答案 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);
}

祝你好运!