首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onRestoreInstanceState of SimpleCursorApdater

onRestoreInstanceState of SimpleCursorApdater
EN

Stack Overflow用户
提问于 2012-10-01 12:55:39
回答 1查看 405关注 0票数 1

如何保存/恢复附加到ListViewCursorAdapter状态?示例:

我有一个安卓Activity,3 ListView:国家,地区,城市。

它们附在3SimpleCursorApdater上:CountryAdapterRegionAdapterCityAdapter

  • 在国家列表中选择一个项目将通过更改RegionAdapter的查询条件来筛选区域列表中的项。
  • 在“区域”列表中选择一个项目将通过更改CityAdapter的查询条件来筛选城市列表中的项。

伪码:

代码语言:javascript
复制
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是空的,因为两个runQuery()方法尚未终止。所以我不能直走:

代码语言:javascript
复制
void onRestoreInstanceState(Bundle state) {
    ...
    savedCitySelection = state.getInt("citySelectedItemPosition")
    cityListView.setSelection(savedCitySelection); // <= NOOO! the cityListView is empty
}

onSaveInstanceState()问题:如何使用 onRestoreInstanceState().保存/恢复这3个列表的状态

EN

回答 1

Stack Overflow用户

发布于 2012-10-11 03:20:54

我建议使用Loader

然后,当加载完成并交换游标时,您可以在ListView上调用ListView*。

CommonsWare基于这里的支持库有一个很好的CursorLoader:

https://github.com/commonsguy/cwac-loaderex

*(注: smoothScrollToPosition需要Android2.2)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12673712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档