0

我有一个扩展 ExpandableListActivity 的类。为了填充这个列表的数据,我使用了一个扩展 SimpleCursorTreeAdapter 的类。我有一个看起来像这样的组(顶级)游标:

mGroupCursor = ((MyApplication)getApplication()).
    getDatabaseHelper().getGroupCursor();
startManagingCursor(mGroupCursor);

当然,我还需要提供子游标:

@Override
protected Cursor getChildCursor(Cursor groupCursor)
{
    Cursor childCursor = ((MyApplication)getApplication().
        getDatabaseHelper().
        getChildCursorForGroup(groupCursor.getInt(mGroupIdIndex));
    startManagingCursor(childCursor);
    return childCursor;
}

我的印象是我可以在这些游标上调用 startManagingCursor 并且一切都会得到处理。显然情况并非如此,因为离开列表视图并使用后退按钮返回会引发异常,“无法恢复活动:尝试重新查询关闭的光标”或类似的东西。

删除调用以startManagingCursor()解决问题,尽管我认为这不是真正正确的做事方式,因为在这种情况下,我不会在任何地方关闭游标。

处理这些游标的推荐方法是什么?我正在寻找简单轻便的东西。我的数据库是一个本地 SQLite 数据库,并且相对较小,所以只要性能不是太慢,这对我来说不是问题。

4

1 回答 1

1

startManagingCursor 已过时。我会考虑使用 AsyncTask 在后台获取光标,并自己设置观察者。

于 2012-10-31T23:31:29.770 回答