使用SimpleCursorTreeAdapter在Android中管理游标的推荐方法是什么?

时间:2012-10-31 23:07:34

标签: android cursor android-cursoradapter

我有一个扩展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数据库,并且相对较小,所以只要性能不是非常慢,这对我来说不是问题。

1 个答案:

答案 0 :(得分:1)

startManagingCursor已过时。我将看一下使用AsyncTask在后台获取游标,并自己设置观察者。