android - 如何从 recyclerview 和 sqlite 中删除项目?
问题描述
我尝试从 recyclerview 和 slqlite 数据库中删除一个项目。这些是活动:
1.数据库
数据库处理程序.java
public void deleteTask(long position){
SQLiteDatabase db = this.getWritableDatabase();
db.delete(TABLE_TASKS, KEY_TASK_ID + "=" + position, null);
db.close();
}
- TaskAdapter 的 onBindViewHolder
任务适配器.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.deleteTask(stringTask.getID()); dth 没有被实例化。创建 DatabaseHandler 的对象并分配给 dth。
推荐阅读
- django - Django Import Export:如何在导入前追加行
- javascript - Javascript 的 AbortController 信号
- c++ - ld 找不到生成的函数
- python-3.x - 具有与夹具关联的参数化值的 Pythonic 解决方案。(pytest)
- c# - Window.Resources 内的 Listbox 内的 Datagrid 始终为空
- sql - 我必须从另一个表中不存在的 postgres sql 中检索一个表的数据?
- arrays - 在 MATLAB 中有效地保存超过 2GB 的结构数组
- javascript - 未读取 Javascript 对象
- scala - Spark - 拖动前一天的值
- scala - spark 构建路径与不兼容版本的 Scala (2.11.0) 交叉编译