java - Android studio 使用Split方法能够从数据库中删除待办事项列表

标签 java android listview

我使用 onItemLongClickListener 方法在长按列表项时创建删除事件。我在 DAO 类中有删除任务方法。如何在 LongClick 方法中实现它?

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

            //Get the selected item position
            selectedItem = adapterView.getItemAtPosition(position).toString();

            //Create a dialog box to inform the delete
            AlertDialog.Builder builder = new AlertDialog.Builder(context);
            builder.setTitle("Delete");
            //Display the seletced item name
            builder.setMessage("Do you want to remove " + selectedItem + "?");

            builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                    String[] list = selectedItem.split(":");
                    //Missing something here that I'm not sure

                    if (dao.deleteTask(id)) {
                        Toast.makeText(MainActivity.this, "Deleted" + task[position], Toast.LENGTH_SHORT).show();
                    }
                }
            });

            builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    dialogInterface.cancel();
                }
            });

            builder.show();

            return true;
        }
    });
<小时/>
public boolean deleteTask(int id) {
        //Get a reference to the database
        SQLiteDatabase db = this.getReadableDatabase();
        //Excute a sql query and get a results in Cursor object "res"
        db.execSQL("Delete from tasks where id = " + id);

        return  true;
    }
<小时/>

最佳答案

将您的 ID 存储在单独的列表中,例如

int idList[] = {1, 2, 3, 4, 5};
TaskList.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(final AdapterView<?> adapterView, final View view, final int position, final long l) {

        //Create a dialog box to inform the delete
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setTitle("Delete");
        //Display the seletced item name
        builder.setMessage("Do you want to remove " + selectedItem + "?");

        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {


                if (dao.deleteTask(idList[position])) {

                }
            }
        });


        builder.show();

        return true;
    }
});

关于java - Android studio 使用Split方法能够从数据库中删除待办事项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48955397/

相关文章:

java - 不可调整大小的 JFrame 更改 pack() 上的位置

java框架复杂度统计

java - isCellEditable 和数据库不能一起工作

Android USB 附件 Intent 过滤器,不希望它自动启动应用程序

java - 为什么两个线程计算速度比一个慢?

带有 scala setAdapter InvocationTargetException 的 Android

java - Activity 的某些部分如何存储在 Android 的外部类中?

android - ListView 去不同的 Activity

Android:当我动态添加新的 ListView 条目时,ListView 中的 Spinners 会丢失它们的值

android - ListView Nativescript,出现在屏幕的 1/3 而不是整页