从数据库中删除项目并更新listview?

时间:2013-07-30 03:53:09

标签: android android-sqlite

所以我有一个方法数据库:

public boolean deleteContact(long rowId) {
    return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowId, null) > 0;
}

我对如何利用它有一个大概的想法,但它只是没有删除项目。我不知道如何找出该项目所在的行。这是包含数据库的listview,其中包含on select事件:

private void Items() {
    AlertDialog.Builder dlgAlert = new AlertDialog.Builder(ItemsList.this);
    dlgAlert.setTitle("Something Here");
    dlgAlert.setMessage("What would you like to do?");
    dlgAlert.setPositiveButton("Cancel",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });
    dlgAlert.setNegativeButton("Delete",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

//This is where it should be finding what row the item is in and deleting it...

                }
            });
    dlgAlert.setCancelable(true);
    dlgAlert.create().show();
}

2 个答案:

答案 0 :(得分:0)

我假设您已使用适配器填充列表视图。通常在处理android数据库时,我们必须提供一个自动增量列_id。您可以使用参数“int which”来获取被单击的条目。 int参数将等于_id(数据库的自动增量列)将数据库获取到光标,将光标移动到“which”并相应地删除项目。

答案 1 :(得分:0)

试试这个:

在您保存任何项目的数据库中,您可能已经分配了一些唯一的标识符,例如_id或Item_no或类似的东西。

因此,当您在游标中获取数据并在Custom Adapter中的GetView方法中将Custom适配器分配给List时,您可以获得该唯一标识符的值。获取它后设置标签以查看您的标识号。这样,当您单击列表中的任何视图时,您将获得其标记值。并将它传递给你的方法项(字符串标记)。当单击警报按钮时,您可以调用与方法中给定标识符匹配的数据库删除方法。这样它就可以删除那条记录。

希望它能帮助!!