現在、メモ帳のチュートリアルを行っています。演習2で、メモを削除するためのコードを完成させます。ただし、これがどのように機能するかは少し混乱しています。関連するコードは次のとおりです。
public boolean onContextItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case DELETE_ID:
AdapterContextMenuInfo info =
(AdapterContextMenuInfo) item.getMenuInfo();
mDbHelper.deleteNote(info.id);
fillData();
return true;
}
return super.onContextItemSelected(item);
}
演習では、「この[AdapterContextMenuInfo]オブジェクトのidフィールドは、ListView内のアイテムの位置を示します。次に、これをNotesDbAdapterのdeleteNote()メソッドに渡すと、メモが削除されます。」
データベース定義を見ると、データベースに新しく追加された行/メモのidフィールドは、自動インクリメント番号によって自動生成されます。したがって、IDが1、2、3、4のノートが4つあり(ゼロがインデックス付けされているかどうかはわかりません!)、2番目のノートを削除した場合、IDが1、3、4のままにすべきではありませんか?つまり、最後の音符(現在はリストの3番目ですが、元の4番目のインデックスが残っています)を削除しようとすると、代わりにindex = 3の行が削除されますか?または、行が削除されたときに行のインデックスが自動的に再作成されますか?
最後に、携帯電話でアプリのデータベースを覗き見/閲覧できますか?