如何保存/恢復ListView
的狀態,它附加到CursorAdapter
?例如:onRestoreInstanceState SimpleCursorApdater
我有一個Android Activity
與3 ListView
:國家,地區,城市。
它們連接到3 SimpleCursorApdater
:CountryAdapter
,RegionAdapter
,CityAdapter
。
- 選擇在國家列表中的項目將通過改變
RegionAdapter
- 查詢條件過濾地區名單的項目選擇上的地區列表中的項目將被改變的查詢條件過濾城市列表項
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
}
問: 我如何保存/與onSaveInstanceState()
和onRestoreInstanceState().