保持ListView的滚动位置


跳转到其它Activity,又退回到ListView所在Activity时,如何保持ListView的滚动位置?


使用ListView时,经常会有有这样场景:

  • 点击ListView中一个Item,跳转到到另外一个显示详情的Activity。
  • 关闭详情Activity时,又回到ListView界面

问题是,如何才能让ListView保持在跳转前的位置?

解决方法:

在Activity中定义两个变量

private int mPosition;
private int mTop;

在 onPause 中为变量赋值

mPosition = mListView.getFirstVisiblePosition();
View first = mListView.getChildAt(0);
mTop = (first == null) ? 0 : first.getTop();

在 onResume 利用保存的值将ListView恢复到跳转前的位置

mListView.setSelectionFromTop(mPosition, mTop);

声明: 本文采用 CC BY-NC-SA 3.0 协议进行授权,转载请注明出处。