我有一个扩展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数据库,并且相对较小,所以只要性能不是非常慢,这对我来说不是问题。
答案 0 :(得分:1)
startManagingCursor已过时。我将看一下使用AsyncTask在后台获取游标,并自己设置观察者。