0

私は Android 開発を始めたばかりでListActivity、 、SQLiteDatabase、およびを使用する単純なアプリを作成していSimpleCursorAdapterます。

Android 開発者の Web サイトには、SimpleCursorAdadpter. 実装を見ると、基になるデータベースがユーザー アクションの結果として変更されるたびにListActivity、次の関数が明示的に呼び出されてリストが「更新」されます。

private void fillData() {
    // Get all of the rows from the database and create the item list
    mNotesCursor = mDbHelper.fetchAllNotes();
    startManagingCursor(mNotesCursor);

    // Create an array to specify the fields we want to display in the list (only TITLE)
    String[] from = new String[]{NotesDbAdapter.KEY_TITLE};

    // and an array of the fields we want to bind those fields to (in this case just text1)
    int[] to = new int[]{R.id.text1};

    // Now create a simple cursor adapter and set it to display
    SimpleCursorAdapter notes = 
        new SimpleCursorAdapter(this, R.layout.notes_row, mNotesCursor, from, to);
    setListAdapter(notes);
}

SimpleCursorAdapter毎回新しいが作成され、 でビューにバインドされているように見えますsetListAdapter()。これは最良/最もクリーンな実装ですか? これが Android Web サイトにあるという事実は、信頼性を高めますが、CursorAdapterドキュメントを見てchangeCursor()、上記のものよりもクリーンな実装に役立つと思われる方法があることを確認しましたが、何がわからないのですか?のように見えるかもしれません。

何も心配していないだけかもしれませんが、C/C++ の世界から来て、データベースに行を挿入/削除するたびにこの「新しい」オブジェクトが作成されるのを見るのは少し面倒です。

4

1 に答える 1

0

はい、その通りです。あなたはそれを何度も見ることができます。リストが常にonResumeで作成されるときに、問題が発生しない可能性がある小さなリストの場合。しかし、それは良いスタイルではありません。cursor.changeCursor()またはadapter.notifyDataSetChanged()を使用できます。

于 2011-07-10T12:40:41.270 に答える