在我当前的项目中,我有一个将数据存储在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
。