ListView
に接続されている状態を保存/復元する方法はCursorAdapter
? 例:
国、地域、都市のActivity
3 つの Android があります。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()
呼び出されると、 2 つのメソッドがまだ終了していないcityListView
ため、 は空です。runQuery()
だから私はまっすぐに行くことができません:
void onRestoreInstanceState(Bundle state) {
...
savedCitySelection = state.getInt("citySelectedItemPosition")
cityListView.setSelection(savedCitySelection); // <= NOOO! the cityListView is empty
}
onSaveInstanceState()
質問: これら 3 つのリストの状態をおよびで保存/復元するにはどうすればよいですか?onRestoreInstanceState().