如何从动态创建的复选框中获取复选框值

时间:2016-06-16 14:50:42

标签: android android-checkbox

以下是我的复选框的代码。

if (type.equalsIgnoreCase("checkbox")){

                String checkBoxText = dataObj.getString("checkboxname");
                checkBox = dynamicviews.CreateCheckbox(context,value,checkBoxText);

                id = R.id.gl + i + 9;
                if (j == 2) {
                    j = 0;
                    tableRow = new TableRow(context);
                    tableRow.setPadding(0, 10, 0, 10);
                    tableLayout.addView(tableRow);
                }

                j++;
                tableRow.addView(checkBox);
                checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                        String string = checkBox.getText().toString();
                        Log.i("checkbox",string);
                    }
                });
            }

以下代码用于创建复选框

public CheckBox CreateCheckbox(Context context,String checkName,String checkBoxText){
    checkBox = new CheckBox(context);
    checkBox.setGravity(Gravity.CENTER);
    checkBox.setTextAlignment(Gravity.CENTER);
    checkBox.setText(checkBoxText);
    checkBox.setTextColor(Color.WHITE);
    checkBox.setBackgroundResource(R.drawable.custom_rdbtn);
    checkBox.setButtonDrawable(new StateListDrawable());
    checkBox.setCompoundDrawablePadding(10);
    return checkBox;
}

并且问题是每个人都获得最后创建的复选框的值。

2 个答案:

答案 0 :(得分:1)

 checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                    @Override
                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                        String string = buttonView.getText().toString();
                        Log.i("checkbox",string);


                    }
                });

我得到了解决方案

答案 1 :(得分:0)

您要将checkBoxobject添加到设置其tableRow的{​​{1}} 之前 - 所以它只适用于您setOnCheckedChangeListener的最后一次checkBox #39;已创建。

要解决此问题,您只需先设置setOnCheckedChangeListener,然后调用tableRow.addView(checkBox) - 请参阅下面的代码:

//first, set the setOnCheckedChangeListener on this checkBox,
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
      @Override
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)     
    {   String string = buttonView.getText().toString();
       Log.i("checkbox",string);
    }
});
//only now do you add the view
tableRow.addView(checkBox);

试一试,希望有所帮助。