android - 在android中设置单选按钮位置
问题描述
我想使用 sqlite db 检查单选按钮,但问题是每次我检查按钮并返回时,它都不会保持选中状态。如何保持选中的按钮处于选中状态?这是实现
case R.id.rg:
RadioGroup.LayoutParams layoutParams = new RadioGroup.LayoutParams(
RadioGroup.LayoutParams.WRAP_CONTENT,
RadioGroup.LayoutParams.WRAP_CONTENT );
dialog.show();
for (int i = 0; i < list.length; i++) {
rb = new RadioButton(context);
rb.setText("item" + i);
rb.setId(i);
rg.addView(rb, layoutParams);
rb = (RadioButton) rg.getChildAt(0);
rb.setChecked(true);
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
rb = group.findViewById(checkedId);
View radioButton = group.findViewById(rg.getCheckedRadioButtonId());
radio_button_position = group.indexOfChild(radioButton);
boolean success = db.updateButtonPosition(myFiles.get(position).getId()),
String.valueOf(radio_button_position));
if (success){
int readButtonPosition = db.readButtonPosition(myFiles.get(position).getId()),
String.valueOf(radio_button_position));
rb = (RadioButton) rg.getChildAt(readButtonPosition);
rb.setChecked(true);
Toast.makeText(PlayerActivity.this, "success", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(PlayerActivity.this, "failure", Toast.LENGTH_SHORT).show();
}
}
}
}
readButtonPosition
给出正确的值,在我的情况下,当我检查第二个按钮时它返回 1。
默认情况下,我将第一个单选按钮设置为选中状态,并希望保留选中的按钮而不是默认值以保持选中状态。
解决方案
在 for 循环之外,根据数据库中保存的值设置选中的单选按钮。使用这个外部循环
int readButtonPosition = db.readButtonPosition(myFiles.get(position).getId()),
String.valueOf(radio_button_position));
rb = (RadioButton) rg.getChildAt(readButtonPosition);
rb.setChecked(true);
并且不要多次设置同一个广播组监听器,将您的广播组监听器置于循环之外。
推荐阅读
- sql - 同时选择和更新行
- python - 如何在 Gurobipy 中定义与二维矩阵相乘的目标函数
- string - LateInitializationError:本地“newTaskTitle”尚未初始化。(如果我最小化键盘,它不会添加新任务?)
- html - 角 | SwiperJS 分页和导航按钮不起作用
- java - 从字符串中删除元音,除非元音使用 for 循环开始单词
- azure - Microsoft Office 尝试更新组织联系人属性
- javascript - 使用模板文件通过 p5.js 在本地生成唯一文件
- javascript - 如何向 React/MUI 自动完成组件添加唯一键?
- python - 如何冻结程序
- javascript - JavaScript 属性选择器:未捕获的 TypeError:无法读取 null 的属性(正在读取“addEventListener”)