从自定义游标适配器类连接到数据库

时间:2016-02-19 15:11:10

标签: java android

我在从我的游标适配器类调用数据库类中的方法时遇到了一些问题。自定义游标类用于获取已勾选复选框的行的row_id。我已经退出了row_id,我的问题是调用数据库来删除该行。

我以一种我知道的方式调用数据库,因为我在其他活动中使用过它。该错误也是空指针错误。我知道什么是空指针错误,但我似乎无法弄清楚为什么我在这里得到一个。

只有在onCheckChanged中删除方法时才会出现错误,如果我将row_id硬编码到函数中,请说bindView函数正常工作。是否可以将Context传递给onCLickChanged函数?

活动不会扩展活动的事实是否会产生影响?

初始化数据库类和上下文

private static Context context;
DBMain db = new DBMain(context);

onCheckedChange Method

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    int id = (Integer) buttonView.getTag();

    db.deleteItem(id);

    Toast toast = Toast.makeText(mContext, "Row " + id + " Pressed", Toast.LENGTH_SHORT);
    toast.show();

 }
}

数据库类

    public boolean deleteItem(int id)
{
    db = DBHelper.getWritableDatabase();
    return db.delete(SHOPPING_TABLE, KEY_ID + "=\"" + id + "\"", null) > 0;
}

错误

java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference

1 个答案:

答案 0 :(得分:0)

移动私有静态Context上下文;     私有静态Context context = this;