这是非常微不足道的,我相信我错过了一些基本的东西
我有一个列表视图的活动(填充ArrayAdapter
)
根据一些建议,我已将getSelectedItemPosition
的状态保存在我已覆盖的onSaveInstanceState
问题是,当我导航回mainactivity时,我期待调用onRestoreInstanceState
,我可以将setPosition设置为我在onSaveInstanceState
中存储的位置,但不会调用它。
所以最终的结果是,当我可以回到mainactivity时,选择将滚动到第一行。这不是一个非常好的用户体验。
答案 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)
onSaveInstanceState
和onRestoreInstance
等等是用于在操作系统强行终止时恢复活动状态的方法。