Android恢复listview选择的位置

时间:2017-01-31 11:11:19

标签: android listview

这是非常微不足道的,我相信我错过了一些基本的东西

我有一个列表视图的活动(填充ArrayAdapter

在适配器中我实现了我的onClick侦听器,它启动了另一个活动。

根据一些建议,我已将getSelectedItemPosition的状态保存在我已覆盖的onSaveInstanceState

问题是,当我导航回mainactivity时,我期待调用onRestoreInstanceState,我可以将setPosition设置为我在onSaveInstanceState中存储的位置,但不会调用它。

所以最终的结果是,当我可以回到mainactivity时,选择将滚动到第一行。这不是一个非常好的用户体验。

1 个答案:

答案 0 :(得分:2)

您可以通过将lastItemSelected position保存在名为lastItemSelected的Activity的int字段中来实现此目的(请记住每次单击列表中的元素时更新此变量)

保存最后一项

yourListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                lastItemSelected = position;

            }
        });

然后在onResume()生命周期方法上执行:

yourListView.setSelection(lastItemSelected)

onSaveInstanceStateonRestoreInstance等等是用于在操作系统强行终止时恢复活动状态的方法。