当用户通过按后退按钮返回活动时,如何保持列表视图的位置?

时间:2016-06-04 09:07:01

标签: android listview android-activity

我有一个listview,当我去另一个活动(通过启动另一个意图)然后回来(按后退按钮)时,如何在我的活动中保持ListView的位置?当用户点击列表视图中的任何项目时,另一个活动开始并且在该活动中,当按下之前的列表视图活动时,我有一个后退按钮,恢复其状态,并且点击了项目位置?我已经搜索过但没有找到任何有用的东西,是否有任何方法可以在清单中执行此操作,因为我在listview actvity清单中使用了以下代码来恢复其状态,我知道在方向更改后恢复状态并不是一个很好的选择但在我的情况下这很有用。

机器人:configChanges ="取向|屏幕尺寸"

3 个答案:

答案 0 :(得分:1)

kotlin 方式

val index: Int = recyclerView.scrollState
 
recyclerView.scrollToPosition(index)

答案 1 :(得分:0)

你可以,

  1. 使用Intent.putExtra将所选索引传递给SecondActivity,然后再传回First。

  2. 使用SharedPreferences存储和检索索引。

  3. 如果你愿意,我可以详细说明。

答案 2 :(得分:0)

int index = mList.getFirstVisiblePosition();
View v = mList.getChildAt(0);
int top = (v == null) ? 0 : (v.getTop() - mList.getPaddingTop());

top为您提供了明显的位置。然后,您可以将其保存在onSaveInstanceState()(我不记得确切的实施)

@Override
public void onSaveInstanceState(Bundle bundle) {
     super.onSaveInstanceState(bundle);
     bundle.putInt("tag", top);
}

然后恢复onCreate中的位置并将其设置为列表

mList.setSelectionFromTop(index, top);