Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-从ListView中删除项目,但不从数据库中删除_Java_Android_Sqlite - Fatal编程技术网

Java Android-从ListView中删除项目,但不从数据库中删除

Java Android-从ListView中删除项目,但不从数据库中删除,java,android,sqlite,Java,Android,Sqlite,所以我有一个小问题,我的代码从ListView中删除ListView行,但每次我关闭应用程序,然后重新打开它时,删除的行会再次填充ListView 以下是DatabaseHelper类中delete方法的代码: public void obrisiTrening(int id){ SQLiteDatabase db = this.getWritableDatabase(); db.delete(DBKonstante.TABLE_NAME, DBKonstant

所以我有一个小问题,我的代码从ListView中删除ListView行,但每次我关闭应用程序,然后重新打开它时,删除的行会再次填充ListView

以下是DatabaseHelper类中delete方法的代码:

 public void obrisiTrening(int id){
        SQLiteDatabase db = this.getWritableDatabase();
        db.delete(DBKonstante.TABLE_NAME, DBKonstante.KEY_ID + "=?", new String[]{String.valueOf(id)});
        db.close();
下面是我从数据库中删除ListView行和记录的代码:

  rec_WorkoutItemsList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> adapterView, View view, final int i, long l) {


            final Dialog dialog = new Dialog(MainActivity.this);
            dialog.setContentView(R.layout.dialog_delete);

            final TextView tvDialogDelete = (TextView) dialog.findViewById(R.id.tvDialogDelete);

            tvDialogDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    final DBPodatci infoData = dbPodatci.get(i);
                    dba = new DBHandler(MainActivity.this);
                    int position = dbPodatci.indexOf(infoData);
                    dbPodatci.remove(position);

                    DBPodatci podatki = new DBPodatci();
                    final int idToDelete = podatki.getItemId();

                    dba.obrisiTrening(idToDelete);
                    dba = new DBHandler(MainActivity.this);
                    dba.obrisiTrening(i);

                    rec_WorkoutItemsList.setAdapter(vjezbaAdapter);
                    vjezbaAdapter.notifyDataSetChanged();
                    dialog.dismiss();

                }
            });
            dialog.show();

            return false;
        }
    });

}

不确定这是在做什么

dba.obrisiTrening(idToDelete);
dba = new DBHandler(MainActivity.this);
dba.obrisiTrening(i);
你只需要这个

   final TextView tvDialogDelete = (TextView) dialog.findViewById(R.id.tvDialogDelete);

    final DBHandler dba = new DBHandler(MainActivity.this);

        tvDialogDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final DBPodatci infoData = dbPodatci.get(i);
                final int idToDelete = infoData.getItemId();

                dbPodatci.remove(i);  
                dba.obrisiTrening(idToDelete);

                vjezbaAdapter.notifyDataSetChanged();
                dialog.dismiss();

注意:这里不应该使用Arraylist&ArrayAdapter。。。您正在使用一个数据库,所以CursorAdapter是您想要的

尝试调试我认为您从listPost DBPodatci这个类中得到了错误的id,这样我们就可以检查此行返回的podatki.getItemId是在第一个postfinal DBPodatci infoData=DBPodatci.geti;中的;。你有一个随机i变量。i的值与单击项在列表中的位置无关。首先尝试确定位置。实现一个MClickListener,它为您提供单击项目的位置。
   final TextView tvDialogDelete = (TextView) dialog.findViewById(R.id.tvDialogDelete);

    final DBHandler dba = new DBHandler(MainActivity.this);

        tvDialogDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final DBPodatci infoData = dbPodatci.get(i);
                final int idToDelete = infoData.getItemId();

                dbPodatci.remove(i);  
                dba.obrisiTrening(idToDelete);

                vjezbaAdapter.notifyDataSetChanged();
                dialog.dismiss();