0

データベースからデータが入力されているリストビューから特定の行を削除したいと思います。リスト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;
}

繰り返しますが、リストビューからデータを削除することはできますが、データベースからは削除できません。この問題を克服するのを手伝ってください。

4

3 に答える 3

1

最初に、次のコードを使用してすべての行IDを取得します

private int[] mRowId;
    dba.open();
        Cursor cr=dba.fetchData();
        cr.moveToFirst();
int i=0;
while(!cr.isAfterLast())
        {
mRowId[i]==cr.getInt(cr.getColumnIndex("colname"));
i++;
cr.moveToNext();

}

リストビューアイテムをクリック

list.setOnItemLongClickListener(new OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
         db.deleteTitle(mRowId[pos]);
            return true;
        }

public void deleteTitle(int rowid) {
        try {
            database.execSQL("DELETE FROM  TableName" + " where columnname="
                    + rowid + ";");
        } catch (Exception e) {
        }
    }
于 2012-11-15T12:02:22.077 に答える
0

db.deleteではなくdb.rawクエリを使用してみてください...これがお役に立てば幸いです。

于 2012-11-15T10:44:57.093 に答える
0

このコードを試してください

public void deleteTableRow(int rowid) {
        try {
            database.execSQL("DELETE FROM  TableName" + " where columnname="
                    + rowid + ";");
        } catch (Exception e) {
        }
    }
于 2012-11-15T10:47:06.647 に答える