ListView
私はいくつかの基本的な Android 開発に飛び込み始めたところですSimpleCursorAdapter
。私は多くのオンライン コード サンプルに目を通していますが、参考として使用できる本もあります (Professional Android 2 Application Development)。
この本では、自動インクリメント、整数、主キー フィールドを持つ SQLite データベースにリスト アイテムを格納する To-Do リスト アプリケーションの例を作成しています。
ユーザーは新しいリスト アイテムを作成できますが、選択したアイテムをリストから削除することもできます。コードでは、削除が発生すると、項目の属性ではなく、項目の属性によって主キー フィールドが ( WHERE
SQL ステートメントの句内で) 制限されます。position
rowid
私には、これは正しくない実装のように思えます。の SQLite ドキュメントを見るAUTOINCREMENT
と、この値は常に増加し、古い値が同じテーブルで再利用されることはないと書かれています。そのため、リストに何かを削除したり追加したりすると、位置と行 ID がすぐに同期しなくなる可能性があります。
では、リストの位置ではなく、行IDがデータベーステーブルに「インデックス」する正しい方法であると仮定するのは正しいでしょうか? 通常の を使用している場合、この位置は安全に使用できると思いますがListAdapter
、データベースにインデックスを作成する場合には適していないようです。