以下を解決することはできません。SQLiteデータベースに保存されているアイテムのリストとそれらのアイテムの名前があります。onContextItemSelectedメソッドを使用して、リスト上のアイテムを操作します(追加および削除)。これまでのところ、データベースに新しい名前を追加し、リストに新しいアイテムを反映するのに問題はありません。しかし、削除すると私は夢中になります。クリックして削除すると、リストからアイテムが削除されますが、データベースから名前を削除できませんでした。
これがコードです
if (item.getItemId() == CM_DELETE_ID) {
AdapterView.AdapterContextMenuInfo acmi = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
// delete item from list
bazar.remove(acmi.position);
// get clicked item id from list
rowID = acmi.id;
// open database
datasource.openToWrite();
if (cursor != null) {
Log.d(LOG_TAG, "--- Delete from mytable: ---");
//delete from database
datasource.db.delete(DBHelper.TABLE, DBHelper.COLUMN_ID + " = " + rowID, null);
Log.d(LOG_TAG, "deleted row = " + datasource.db.delete(DBHelper.TABLE, DBHelper.COLUMN_ID + " = " + rowID, null));
} else {
Log.d(LOG_TAG, "Cursor is null");
cursor.close();
}
// close database
datasource.close();
myAdapter.notifyDataSetChanged();
return true;
ログによると
05:12:08.403 1131 example.CustomAdapter DEBUG row inserted, ID = 1
05:12:08.413 1131 example.CustomAdapter DEBUG ID = 1, name = A1
05:12:22.853 1131 example.CustomAdapter DEBUG row inserted, ID = 2
05:12:22.864 1131 example.CustomAdapter DEBUG ID = 1, name = A1
05:12:22.864 1131 example.CustomAdapter DEBUG ID = 2, name = A2
05:12:23.623 111 jp.co.omronsoft.openwnn DEBUG dalvikvm GC_EXTERNAL_ALLOC freed 20K, 44% free 3471K/6151K, external 3902K/3936K, paused 169ms
05:12:41.833 1131 example.CustomAdapter DEBUG --- Delete from mytable: ---
05:12:41.984 1131 example.CustomAdapter DEBUG deleted row count = 0
onCreateには、所有しているすべてのアイテムを一覧表示するdbReadAllメソッドとbazar.add(new Bazar(names、R.drawable.unread));があります。私のArrayListです
void dbReadAll() {
bazar.add(new Bazar(names, R.drawable.unread));
// подключаемся к базе данных для чтения данных
datasource.openToRead();
// получаем значение курсора
cursor = datasource.queryAll();
if (cursor.moveToFirst()) {
nameColIndex = cursor.getColumnIndex(DBHelper.COLUMN);
do {
Log.d(LOG_TAG, "ID = " + cursor.getInt(idColIndex) + ", name = " + cursor.getString(nameColIndex));
names = cursor.getString(nameColIndex);
bazar.add(new Bazar(names, R.drawable.unread));
} while (cursor.moveToNext());
} else {
cursor.close();
datasource.close();
}
}