如何从 recyclerview 和 sqlite 中删除项目? [复制]

Posted

技术标签:

【中文标题】如何从 recyclerview 和 sqlite 中删除项目? [复制]【英文标题】:How to delete an item from recyclerview and sqlite? [duplicate] 【发布时间】:2019-10-02 17:59:14 【问题描述】:

我尝试从 recyclerview 和 slqlite 数据库中删除一个项目。 这些是活动:

1.数据库

DatabaseHandler.java

public  void deleteTask(long position)
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_TASKS, KEY_TASK_ID + "=" + position, null);
    db.close();

    TaskAdapter 中的 onBindViewHolder

TaskAdapter.java

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) 
    final Task stringTask = tasksList.get(position);
    holder.taskText.setText(stringTask.getTaskName());
    holder.dateText.setText(stringTask.getTaskDate());
    holder.id = stringTask.getID();
    holder.deleteButton.setOnClickListener(new View.OnClickListener()
        @Override
        public void onClick(View view)

            tasksList.remove(position);
            notifyItemRemoved(position);

            dth.deleteTask(stringTask.getID());


        
    );


这是错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.android.todolistapp.DatabaseHandler.deleteTask(long)' on a null object reference
at com.example.android.todolistapp.TaskAdapter$1.onClick(TaskAdapter.java:51)
at android.view.View.performClick(View.java:6935)
at android.widget.TextView.performClick(TextView.java:12738)
at android.view.View$PerformClick.run(View.java:26211)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7000)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

【问题讨论】:

你的 dth 对象好像是空的,能不能把整个类都放上来看看它的实例化? 【参考方案1】:

dth.deleteTask(stringTask.getID()); dth 没有被实例化。创建DatabaseHandler的对象并赋值给dth。

【讨论】:

以上是关于如何从 recyclerview 和 sqlite 中删除项目? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用从 SQLite 概括的数据填充 RecyclerView/ListView

从sqlite获取的数据未显示在recyclerview中

如何在基于 SQLite 的 recyclerview 中实现 searchview? - 安卓

当sqlite android片段中的数据更改或删除时如何刷新recyclerview?

SQLite 的 Recyclerview 第一次显示空白页面

删除单个 SQlite 行 RecyclerView onSwiped