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
。