动态添加的单选按钮不侦听 onCheckChangedListener()



我需要动态添加RadioGroup和RadioButtons,并生成所需的视图并在动态创建的RadioGroup上实现onCheckChangedListener((。问题是,当选中新添加的按钮时,当我单击其他按钮时,它不会取消选中。我已经检查过这个 - 动态添加单选按钮时单选组中的问题,但无济于事。

我正在一个片段中工作,并在其中动态添加视图。单选按钮不显示检查更改的行为。请帮我解决这个问题。

//optionsGroup(RadioGroup),optionButton(RadioButton) 
    optionsGroup = new RadioGroup(getActivity());
    optionsGroup.setId(radioGroupCount);
    optionsGroup.setPadding(20, 20, 20, 20);
    optionsGroup.setLayoutParams(layparams);
    radioGroupList.add(optionsGroup);
    ArrayList<Options> RadioButtonOptions = question.getQuestionOptions().getOptions();
    for (int i = 0; i < RadioButtonOptions.size(); i++) {
        optionButton = new RadioButton(getActivity());
        optionButton.setId(i);
        optionButton.setText(RadioButtonOptions.get(i).getOptionValue());
        optionsGroup.addView(optionButton);
        optionsGroup.clearCheck();
    }
    optionsGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
          for(int rb=0;rb<optionsGroup.getChildCount();rb++){
              RadioButton btn = (RadioButton) optionsGroup.getChildAt(rb);
              if(checkedId==btn.getId()){
                  radioGroupAnswerList.clear();
                  radioGroupAnswerList.add(btn.getText().toString());
                  return;
              }
          }
        }
    });
    holderlayout.addView(optionsGroup);
我认为

问题是您在分配其侦听器之前添加视图. 所以请尝试这个。

for (int i = 0; i < RadioButtonOptions.size(); i++) {
        optionButton = new RadioButton(getActivity());
        optionButton.setId(i);
        optionButton.setText(RadioButtonOptions.get(i).getOptionValue());

    optionsGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
          for(int rb=0;rb<optionsGroup.getChildCount();rb++){
              RadioButton btn = (RadioButton) optionsGroup.getChildAt(rb);
              if(checkedId==btn.getId()){
                  radioGroupAnswerList.clear();
                  radioGroupAnswerList.add(btn.getText().toString());
                  return;
              }
          }
        }
    });
 optionsGroup.addView(optionButton);
}

如果一个单选按钮点击正确,您需要取消选中其他单选按钮? 所有这些都将动态创建单选按钮和单选组.. 然后你必须这样做..

//optionsGroup(RadioGroup),optionButton(RadioButton) 
optionsGroup = new RadioGroup(getActivity());
optionsGroup.setId(radioGroupCount);
optionsGroup.setPadding(20, 20, 20, 20);
optionsGroup.setLayoutParams(layparams);
radioGroupList.add(optionsGroup);
ArrayList<Options> RadioButtonOptions = question.getQuestionOptions().getOptions();
for (int i = 0; i < RadioButtonOptions.size(); i++) {
    optionButton = new RadioButton(getActivity());
    optionButton.setId(i);
    optionButton.setText(RadioButtonOptions.get(i).getOptionValue());
    optionsGroup.addView(optionButton);
    optionsGroup.clearCheck();
}
optionsGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
      for(int rb=0;rb<optionsGroup.getChildCount();rb++){
          RadioButton btn = (RadioButton) optionsGroup.getChildAt(rb);
          if(checkedId==btn.getId()){
              radioGroupAnswerList.clear();
              radioGroupAnswerList.add(btn.getText().toString());
              optionsGroup.clearCheck();
               if (isChecked) {
                 optionsGroup.check(btn.getId());
              }
              return;
          }
      }
    }
});
holderlayout.addView(optionsGroup);

相关内容

  • 没有找到相关文章

最新更新