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 に答える