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

Android 如何从动态创建的复选框中获取复选框值,android,android-checkbox,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 (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;
}

问题是,我要为每一个复选框获取上次创建的复选框的值。

在设置其
setoncheckedchangelister
之前,您正在将
checkBoxobject
添加到
表行中

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

//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);

请尝试一下,我希望它能有所帮助。

在设置其
设置的
复选框ChangeListener
之前,您正在将
复选框对象添加到
表格行中

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

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


                    }
                });
要解决此问题,只需先设置setOnCheckedChangeListener,然后调用
tableRow.addView(复选框)
-请参见下面的代码:

//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);
试试看,我希望能有所帮助

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

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


                    }
                });
我找到了解决办法


我得到了解决方案

您可以尝试将复选框实例存储在
ArrayList
中。您可以尝试将复选框实例存储在
ArrayList
中。与其使用
checkBox.getText()
,不如使用
buttonView.getText()
——onCheckedChanged
方法传递选中状态已更改的
复选框视图(
CompoundButton
)。我相应地更新了代码,它应该可以工作。最大的问题是在设置listener.Noted之前添加
checkBoxobject
。与其使用
checkBox.getText()
,不如使用
buttonView.getText()
——onCheckedChanged
方法传递选中状态已更改的
复选框视图(
CompoundButton
)。我相应地更新了代码,它应该可以工作。最大的问题是在设置侦听器之前添加
checkBoxobject