首页 > 解决方案 > 从 sqlite 数据库中删除单行

问题描述

我正在尝试通过 listview 上的 longPress 从数据库中删除该项目。当我单击删除时,该项目将从列表视图中删除并显示 Toast 消息已删除,但如果我移动到其他活动并返回,该项目仍会在我的列表视图中退出。如何从数据库中删除项目

在这里,这是我的代码

 listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                        public boolean onItemLongClick(final AdapterView<?> arg0, View arg1, final int arg2, final long arg3) {
                            final AlertDialog.Builder delete = new AlertDialog.Builder(AddCount.this);
                            delete.setIcon(R.drawable.ic_baseline_delete_24);
                            delete.setTitle("Are you sure");
                            delete.setMessage("Do you want to delete this item?");
                            delete.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int whichButton) {
                                            DbHandler db = new DbHandler(getApplicationContext());
                                                db.deleteData(arg2 + "");
                                                userList.remove(arg2);
                                                adapter.notifyDataSetChanged();
                                                Toast.makeText(getApplicationContext(), "Deleted", Toast.LENGTH_SHORT).show();
    
                                        }
                                    });
                            delete.setNegativeButton("No", new DialogInterface.OnClickListener() {
                                        public void onClick(DialogInterface dialog, int whichButton) {
                                            dialog.cancel();
                                        }
                                    });
                            delete.show();
                            return true;
                        }
                    });

Dbhandler.java(SQLite 数据库)

public void deleteData(String id)
    {
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(TABLE_Inputs, "id = ? ", new String[]{id});
        db.close();
        }

这是删除最终关键字后的显示方式 在此处输入图像描述

标签: delete-row

解决方案


https://developer.android.com/reference/android/widget/AdapterView.OnItemLongClickListener

在这个链接中,他们定义了如下方法:onItemLongClick(AdapterView<?> parent, View view, int position, long id)。

您的定义:public boolean onItemLongClick(final AdapterView<?> arg0, View arg1, final int arg2, final long arg3)。

您使用了“final int arg2”。由于使用 final 关键字定义的参数无法重新分配,这可能会导致问题。尝试在没有final 关键字的情况下定义您的方法,看看它是否有效。


推荐阅读