如何从动态添加复选框及其值获取id

时间:2016-05-11 19:44:52

标签: java android checkbox

我想获得动态添加CheckBox的价值,但是当我想看看我的checkBox.isChecked()之一时;它只在我检查创建的最后一个复选框时才响应!这是我的容器。

for (String answer : multiMap.get(questionFromMultiMap))
        {

            i++;
            et_button = (CheckBox) getLayoutInflater().inflate(R.layout.numberofchoices, null);
            et_button.setText(answer);
            et_button.setId(i);
            container.addView(et_button);
            listOfChoice.add(answer);


        }

我想检查一下这样检查:

btnCorrect.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

         if (et_button.isChecked()){
             System.out.println(et_button.getId());
         }else{
             System.out.println("pouet");
         }

        }
    });

在谷歌找不到正确的答案! 谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

当你调用et_button.isChecked()时,会在最后一个膨胀的视图中调用它,因为你会在循环的每次迭代中覆盖它。 您应该将它们添加到List中,然后在onClickListener中检查选中哪一个:

List<CheckBox> list = new LinkedList<>(); //this should be visible from onClickListener, so it should be an instance field

for (String answer : multiMap.get(questionFromMultiMap)) {
        i++;
        CheckBox et_button = (CheckBox) getLayoutInflater().inflate(R.layout.numberofchoices, null);
        et_button.setText(answer);
        et_button.setId(i);
        list.add(et_button);
        container.addView(et_button);
        listOfChoice.add(answer);
    }

btnCorrect.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
      for(CheckBox cb : list) {
         if (cb.isChecked()){
             System.out.println(cb.getId());
         }else{
             System.out.println("pouet");
         }
      }
    }
});

Haven没有对它进行过测试,但它应该有效。