データベースからデータが入力されているリストビューから特定の行を削除したいと思います。リストsetOnItemLongClickListener
ビューからデータを削除することはできましたが、アクティビティを再開するとonCreate()
、データベースからデータをフェッチするため、削除した行がそこにあることがわかります。
ここで私がしたこと:
MainActivity.java
db = new AndroidOpenDbHelper(this);
showing_history
.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> arg0,
View arg1, final int pos, final long id) {
final AlertDialog.Builder b = new AlertDialog.Builder(
MainActivity.this);
b.setIcon(android.R.drawable.ic_dialog_alert);
b.setMessage("Delete this from history?");
b.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
HistoryNamesList.remove(pos);
((BaseAdapter) mHistoryListAdapter)
.notifyDataSetChanged();
del(pos);
}
});
b.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
dialog.cancel();
}
});
b.show();
return true;
}
});
MainActivity.javaのdeleteメソッド:
private void del(int j) {
if (db.deleteTitle(j))
Toast.makeText(this, "Delete successful.", Toast.LENGTH_LONG)
.show();
else
Toast.makeText(this, "Delete failed.", Toast.LENGTH_LONG).show();
db.close();
}
AndroidOpenDbHelper.javaの削除クエリ
public boolean deleteTitle(long rowId) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete(TABLE_NAME_HISTORY, ID + "=" + rowId, null) > 0;
}
繰り返しますが、リストビューからデータを削除することはできますが、データベースからは削除できません。この問題を克服するのを手伝ってください。