Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
Android 从SQLiteDatabase中的特定行提取数据_Android_Sqlite - Fatal编程技术网

Android 从SQLiteDatabase中的特定行提取数据

Android 从SQLiteDatabase中的特定行提取数据,android,sqlite,Android,Sqlite,我的应用程序有一个RecyclerView列表,其中填充了SQLite表中的数据:UserDatabase。我通过在下面显示的DbHelper类中调用getAllUser方法来实现这一点。我的Recylcerview的ListAdapter中还有一个方法,它在单击列表项时启动ItemEditActivty。ItemEditActivity允许用户编辑或删除他们刚刚使用UpdateUserDetail和DeleteRowItem方法单击/打开的行数据,如下所示 这一切都很完美,但是,我不知道如何将

我的应用程序有一个RecyclerView列表,其中填充了SQLite表中的数据:UserDatabase。我通过在下面显示的DbHelper类中调用getAllUser方法来实现这一点。我的Recylcerview的ListAdapter中还有一个方法,它在单击列表项时启动ItemEditActivty。ItemEditActivity允许用户编辑或删除他们刚刚使用UpdateUserDetail和DeleteRowItem方法单击/打开的行数据,如下所示

这一切都很完美,但是,我不知道如何将ItemEditActivity的三个EditText设置为行的表值NAME、QUANTITY和DESCRIPTION;正如存储在表中一样。当前,当用户打开ItemEditActivity时,EditText的et_名称、et_数量和et_说明为空在onCreate期间,如何将这些EditText设置为保存在表格行中的数据?

编辑:我通过从ListAdapter传递一个的意图并在ItemEditActivity中将变量设置为itemPosition来获取所选的列表位置项

DbHelper类:
您必须在数据库中创建方法来获取单行。在DbHelper类中创建方法,如下所示

 public UserData getSingleUserDetial(String userId) {
    SQLiteDatabase db = this.getWritableDatabase();
    UserData userData = null;

    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_USERdETAIL + " WHERE " + _ID + "= ?", new String[]{userId});

    try {
        while (cursor.moveToNext()) 
        {
            userData = new UserData();
            userData.name = cursor.getString(cursor.getColumnIndex(NAME));
            userData.quantity = cursor.getString(cursor.getColumnIndex(QUANTITY));
            userData.description = cursor.getString(cursor.getColumnIndex(DESCRIPTION));

        }
        cursor.close();
    } catch (Exception e) {
        Log.d(TAG, "Error while trying to get data from database");
    } finally {
        if (cursor != null && !cursor.isClosed()) {
            cursor.close();
        }
    }

    return userData;
}
然后像这样获取ItemEditActivity

UserData userData = dbHelper.getSingleUserDetial(userId);

您必须在数据库中创建方法来获取单行。在DbHelper类中创建方法,如下所示

 public UserData getSingleUserDetial(String userId) {
    SQLiteDatabase db = this.getWritableDatabase();
    UserData userData = null;

    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_USERdETAIL + " WHERE " + _ID + "= ?", new String[]{userId});

    try {
        while (cursor.moveToNext()) 
        {
            userData = new UserData();
            userData.name = cursor.getString(cursor.getColumnIndex(NAME));
            userData.quantity = cursor.getString(cursor.getColumnIndex(QUANTITY));
            userData.description = cursor.getString(cursor.getColumnIndex(DESCRIPTION));

        }
        cursor.close();
    } catch (Exception e) {
        Log.d(TAG, "Error while trying to get data from database");
    } finally {
        if (cursor != null && !cursor.isClosed()) {
            cursor.close();
        }
    }

    return userData;
}
然后像这样获取ItemEditActivity

UserData userData = dbHelper.getSingleUserDetial(userId);

太好了,我非常感激。然而,在你的“while”结尾有一个分号,我认为不应该在那里。太好了,我非常感激。然而,在你的“while”结尾有一个分号,我认为不应该在那里。