我在xml上有25个复选框。 我想知道文档中有多少个框被检查。 试图像这样循环..
p1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (p1.isChecked()){
palm1=longitude+","+latitude;
//Toast.makeText(getBaseContext(), palm1, Toast.LENGTH_SHORT).show();
}else {
palm1="health";
//Toast.makeText(getBaseContext(), "uncheck", Toast.LENGTH_SHORT).show();
}
percentage();
}});
public void percentage(){
Vector<CheckBox> allCheck=new Vector<CheckBox>();
int counterChecked=0;
allCheck.add(p1);
allCheck.add(p2);
allCheck.add(p3);
allCheck.add(p4);
................
allCheck.add(p25);
for(int i=0; i<allCheck.size();i++)
if(allCheck.get(i).isChecked()){
counterChecked++;
}
double percent = (counterChecked * 100) / allCheck.size();
persen=String.format("%.1f %%", percent);
kerusakan= Integer.toString(counterChecked);
Toast.makeText(getBaseContext(),percent, Toast.LENGTH_SHORT).show();
Toast.makeText(getBaseContext(), kerusakan, Toast.LENGTH_SHORT).show();
}
但它表示0值。 我怎样才能知道检查了多少个盒子?
答案 0 :(得分:0)
我建议使用计数器。当用户点击复选框时,您将检查它是否会被选中或取消选中。在第一种情况下,您将执行计数器++;在第二种情况下反击 - ; 但是,您应该向我们展示一些代码示例,以获得更具体的答案。
答案 1 :(得分:0)
通过在整个活动中实施OnCheckChangeListener,可以节省代码和时间。这应该触发任何复选框的单击,然后您可以在onCheckChanged方法实现上创建计数例程。
这样的事情:
public class YourActivity extends Activity实现OnCheckedChangeListener {
...在这里声明一个全局数组
private CheckBox[] checkboxes;
.... onCreate方法中的某个地方
checkboxes = new CheckBox[3];
for (int i = 0; i < checkboxes.length; i++) {
String checkboxID = "checkBox" + (i + 1);
int resID = getResources().getIdentifier(checkboxID, "id",
getPackageName());
checkboxes[i] = ((CheckBox) findViewById(resID));
checkboxes[i].setOnCheckedChangeListener(this);
allCheckBoxes.add(checkboxes[i]);
}
...以及界面的覆盖方法
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
int countOfCheckBoxesChecked = 0;
for (CheckBox checkbox : allCheckBoxes) {
if (checkbox.isChecked()) {
countOfCheckBoxesChecked++;
}
}
Log.i(TAG, "number of checked = " + countOfCheckBoxesChecked);
}