我正在做一个应用程序,我必须为初始选定项目生成具有某些基本值的复选框,然后更改它的值。那里没什么复杂的。
我的问题是当我重置布局时,我使用新的RadioButtons创建一个新的RadioGroup,并为RadioGroup创建一个新的OnCheckedChangeListener。但是当我在重置UI后单击一个复选框时,来自侦听器的checkId输出的东西太大了我的RadioGroup。
这是我的代码。我不会显示重置部分,但主要是调用removeAllViews()然后再次生成布局。
final RadioGroup optGroup = new RadioGroup(getActivity());
optGroup.setOrientation(LinearLayout.HORIZONTAL);
for(int itemNo = 0; itemNo < cell.getList().countItems(); itemNo++){
RadioButton rButton = new RadioButton(getActivity());
rButton.setText(cell.getList().getItem(itemNo).getLabel());
optGroup.addView(rButton);
if(cell.getSelectedListItem().getLabel().equals(cell.getList().getItem(itemNo).getLabel())){
optGroup.check(itemNo+1);
}
}
optGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
cell.selectListItem(String.valueOf(checkedId));
}
});
linearLayout.addView(optGroup);
当我记录输入时,在重置UI之前,输出的范围是1到3(我有3个复选框),重置后的范围是4到6。
编辑初次检查也是第一次使用,就像第三次显示的范围是4到6一样。
谢谢!
答案 0 :(得分:1)
您应该设置radioButton ID
rButton.setId(itemNo);
但请确保不要使用0作为Id。 由于每个RadioButton Id必须是唯一的,我想OS会跟踪第一次运行时使用的自动生成的ID(1-3)。然后在重置后,它与4-6,(从3恢复计数)