保存并检索Sqlite中的RadioButton值



在我当前的项目中,我有一个将数据存储在sqlite中的表单。我在一个广播组中有3个广播按钮。我想做的是将这些无线电按钮的值保存在一个片段中,并在另一个片段中检索它们,以防用户想编辑表单。

我已经阅读了这篇文章,但我无法解决问题。

我发现我无法将布尔数据保存在sqlite中,我应该使用具有0和1值的整数。但是我不知道该如何实施。

在我的sqliteopenhelper类中,我制作了一个新专栏:

  public static final int COL5 = 0;

在我写的方法中,我写了

 String createTable = "CREATE TABLE " + TABLE_NAME + " " +
                "(ID INTEGER PRIMARY KEY AUTOINCREMENT, " +
                COL2 + " TEXT, " + COL3 + " TEXT, " + COL4 + " TEXT, " + COL5 + "  INTEGER DEFAULT 0)";

在我的adddata方法中,我将其添加为Integer

我不知道该如何保存和检索。我应该如何保存是否将单个按钮检查为整数,然后检索相同的值。

您在RadioGroup中具有RadioButtons,因此只能始终检查一个。因此,您仅需要数据库条目来存储状态。因此,请检查哪个是checked,然后在数据库中存储一个0到4(或1和5(之间的值。

因此,您的桌子创建所需的只是:

String createTable = "CREATE TABLE " + TABLE_NAME + " " +
            "(ID INTEGER PRIMARY KEY, " +
             " radioGroupState INTEGER)";

(请注意,我放弃了自动启动,因为这是不必要的(然后查询这样的问题:

@Override
public void onCreate(SQLiteDatabase db) {
    String createTable = "CREATE TABLE " + TABLE_NAME + " " +
            "(" + ID + " INTEGER PRIMARY KEY, " +
            " radioGroupState INTEGER)";
}
public void saveRadioButtonState(Integer state) {
    ContentValues cv = new ContentValues();
    cv.put("radioGroupState", state);
    getWritableDatabase().update(TABLE_NAME,  cv, ID +"=?", new String[]{ID + ""});
}
public Integer getRadioButtonState() {
    RADIO_GROUP_STATE = "radioGroupState";
    Cursor c = getReadableDatabase().query(TABLE_NAME, RADIO_GROUP_STATE, ID + " = ?", new
                    String[]{RADIO_BUTTON_ID.toString()},
            null,
            null, null);
    Integer state = -1;
    if (c.moveToFirst()) {
        state = c.getInt(c.getColumnIndex("radioGroupState"));
    }
    c.close();
    return state;
}

附录:查看您的上一个问题,我对您真正想保存在数据库中的内容有些困惑。我的解决方案向您展示了如何保存按下哪个RadioButton。如果需要,请保存文本,只需由String替换Integer

最新更新