2012-05-04 118 views
0

我有一个程序在一个页面上有50多个复选框。 而且我需要检查选择了哪些框。检查选中了哪个复选框

我知道我可以做服用点是这样的:

CheckBox cb1 = (CheckBox) findViewById(R.id.checkBox1); 
CheckBox cb2 = (CheckBox) findViewById(R.id.checkBox2); 

if (cb1.isChecked){ 
//get Checkbox name 
} 
if (cb2.isChecked){ 
//get Checkbox name 
} 

但是,如果我有超过50个复选框要做到这一点,这将需要一些时间。 他们是一个更快的方式来检查选择哪个?例如:

int i; 

for (i = 0; i<checkBox.length; i++){ 
    CheckBox cb+i = (CheckBox) findViewById (R.id.checkBox+i); 

    if (cb+i.isChecked){ 
    //get Checkbox name 
    } 
} 

也许你也可以说:你可以选择多于一个复选框。 我希望你明白我的意思。

感谢不已, Bigflow

+0

它们不在容器中,因此您可以通过容器的子循环来检查它们是否是CheckBox,如果是,那么检查它是否被检查? – DaTroop

+1

你必须去CheckedListView它会返回被选择的位置。在布局 –

回答

1

另一种解决方法可能是:

假设你已经在LinearLayout添加CheckBox,你可以得到Java中的LinearLayout参考,并得到孩子意见是这样的:

LinearLayout layout= (LinearLayout)findViewById(R.id.checkbox_container); 
ArrayList values = new ArrayList(); 
for(int i=0; i<layout.getChildCount(); i++) 
{ 
    View v = layout.getChildAt(i); 
    if(v instanceof CheckBox) 
    { 
     CheckBox cb = (CheckBox)v; 
     if(cb.isChecked()) 
     values.add(cb.getText().toString()); 
    } 
} 
+0

嘿,我用过这个。 不得不修改我点点,因为我得到了: <相对布局 <滚动型 Bigflow

+0

也许一个愚蠢的问题,但我也得到了TableRow1,TableRow2等 但只有1 Tablelayout(全行在这个TableLayout中,我怎样才能检查TableLayout中的所有TableRows? – Bigflow

0

您可以从复选框制造阵列比增加他们每个代码给你布置

CheckBox[] achecker = new CheckBox[50]; 
achercker[0] = new CheckBox(context); 

或一个ArrayList是更好,当你不知道有多少的CheckBox你将需要

ArrayList<CheckBox> lchecker = new ArrayList<CheckBox>(); 
lchecker.add(new CheckBox(context)); 
0

将侦听器设置为您的复选框。 checkbox1.setOnCheckChangedListener(this)然后覆盖

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ 
if (isChecked){ 
      // to determine which checkbox use buttonView.getId(); 
     } 
} 
+0

中添加50+复选框并不是一个好习惯,所以你建议他添加监听器来说50'CheckBox'? –

0

您可以在下面试试这个,按ID号设置ID:

ArrayList<Boolean> booleanList = new ArrayList<Boolean>();

for(int counter=0; counter<50; counter++) { 
     booleanList.add(false); 
     CheckBox chkBox = new CheckBox(this); 
     chkBox.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT, 1)); 
     chkBox.setId(counter); 
     chkBox.setOnClickListener(chkBoxOnClickListener); 
} 

private OnClickListener chkBoxOnClickListener = new OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     int chkboxID = ((CheckBox)view).getId(); 
     chkBox = (CheckBox) findViewById(chkboxID); 
      if(chkBox.isChecked()) { 
       booleanList.set(chkBox, true); 
      } 

     } 
} 
相关问题