我想在android上实现恢复列表视图状态功能。我的想法是在调用onPause函数时保存getFirstVisiblePosition()
,并在调用onResume函数时使用setSelection()
恢复状态(向下滚动一个litter位以匹配getFirstVisiblePosition()
)。代码如下所示:
@Override
protected void onPause() {
selectedItemPosition = listView.getFirstVisiblePosition();
getSharedPreferences(TAG, MODE_PRIVATE)
.edit()
.putInt("list_selection", selectedItemPosition)
.commit();
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
final int newSelection = getSharedPreferences(TAG, MODE_PRIVATE).getInt("list_selection", 0);
if (newSelection != selectedItemPosition) {
selectedItemPosition = newSelection;
listView.post(new Runnable() {
@Override
public void run() {
listView.setSelection(selectedItemPosition);
}
});
}
}
我认为在使用ArrayAdapter
时使用CursorAdapter
时效果会很好。将cursorAdapter.getCount() == 0
调用setSelection方法,这会使setSelection
无法正常工作。
所以我的问题是如何让setSelection
与CursorAdapter
合作?
答案 0 :(得分:0)
我应该将onResume中的代码移到LoaderManager.LoaderCallbacks<Cursor>.onLoadedFinished
,这会使cursorAdapter.getCount()
等于实数。