私はちょうどAndroid開発から始めて、ListActivity
、SQLiteDatabase
、およびSimpleCursorAdapter
を使用する単純なアプリを構築しています。データが変更されるたびに新しいSimpleCursorAdapter?
Androidデベロッパーのウェブサイトには、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ウェブサイトにあるという事実は、私がCursorAdapter
のドキュメントを見て、changeCursor()
メソッドが上記のものよりもクリーンな実装に役立つように見えたが、私はそうではないそのように見えるかもしれません。
たぶん私は何も気にしませんが、C/C++の世界から来て、データベースから行を挿入/削除するたびに作成されたこの新しいオブジェクトが少し重いようです。
SimpleCursorAdapterは常に1回だけ作成する必要があります。完全に新しいアダプタを作成するのではなく、基になるデータベースに変更があるたびにアダプタを作成する必要はありません。changeCursor()またはrequery()オプション。私はまた彼らがなぜそのようにしたのか不思議です。 – Gopal