【发布时间】:2011-08-10 22:56:12
【问题描述】:
我在使用 ListView setSelection 方法时遇到了一些问题。在横向和纵向之间切换时,我试图让我的列表视图保持相同的索引。但是,每次我旋转并重新创建活动时,列表视图都会从顶部开始。我使用的代码如下:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
ArrayList<Integer> indices = new ArrayList<Integer>();
for (Integer i : f_checkedMessages) {
indices.add(i);
}
savedInstanceState.putIntegerArrayList("CheckedMessageIndices", indices);
savedInstanceState.putInt("ListIndex", f_listView.getFirstVisiblePosition());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
ArrayList<Integer> indices = savedInstanceState.getIntegerArrayList("CheckedMessageIndices");
for (Integer i : indices) {
f_checkedMessages.add(i);
}
int listIndex = savedInstanceState.getInt("ListIndex");
f_listView.setSelection(listIndex);
}
我已经使用调试器来验证 listIndex 是正确的值。还应该提到的是,选中的列表视图项目在改变方向时仍然存在。我知道 setSelected 仅在触摸模式下选择列表视图项,但文档说无论是否处于触摸模式,此方法都会对齐列表视图。
有谁知道为什么这不起作用或者是否有更好的方法来解决这个问题?
谢谢,非常感谢您的帮助!
【问题讨论】:
标签: android listview orientation