如何保存/恢复ListView
附加到的状态CursorAdapter
?例子:
我有一个Activity
带有 3的 Android 设备ListView
:国家、地区、城市。
它们连接到 3 SimpleCursorApdater
: CountryAdapter
, RegionAdapter
, CityAdapter
。
- 选择国家列表中的项目将通过更改查询条件过滤地区列表的项目
RegionAdapter
- 在 Regions List 中选择一个 item 将通过更改 Cities List 的查询条件来过滤 Cities List 中的项目
CityAdapter
伪代码:
void countryList_onItemSelected() {
regionsAdapter.getFilter().filter(countryId);
}
void regionList_onItemSelected() {
cityAdapter.getFilter().filter(regionId);
}
Cursor regionAdapter_FilterQueryProvider_runQuery(countryId) {
Cursor cur = dbHelper.getReadableDatabase().
query("Select * from Region where countryId = "+countryId);
return cur;
}
Cursor cityAdapter_FilterQueryProvider_runQuery(regionId) {
Cursor cur = dbHelper.getReadableDatabase().
query("select * from City where regionId = "+regionId);
return cur;
}
当onRestoreInstanceState()
调用 时,cityListView
是空的,因为这 2 个runQuery()
方法还没有被终止。所以我不能直截了当:
void onRestoreInstanceState(Bundle state) {
...
savedCitySelection = state.getInt("citySelectedItemPosition")
cityListView.setSelection(savedCitySelection); // <= NOOO! the cityListView is empty
}
问题:如何使用 和 保存/恢复这 3 个列表的onSaveInstanceState()
状态onRestoreInstanceState().