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 中的删除方法:

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.raw 查询而不是 db.delete ......我希望这可以帮助你..

于 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 回答