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 データベースで、比較的小さいので、パフォーマンスが不当に遅くない限り、問題にはなりません。