做一个应用射频技术的企业仓库管理app遇到一个多选择框的问题,摸索了两天终于搞定:
第一个方法想到的是监听器,但是监听器有个问题每个按钮都要监听,
CheckBoxListener checkBoxListener =newCheckBoxListener();
acCbTime.setOnCheckedChangeListener(checkBoxListener);
acCbCustomer.setOnCheckedChangeListener(checkBoxListener);
private class CheckBoxListenerimplements CompoundButton.OnCheckedChangeListener {
@Override
public voidonCheckedChanged(CompoundButton compoundButton, booleanb) {
}
}
设置一个公用监听器无法保证全部按钮选中,于是放弃了这个办法,但是肯定有其他解决办法我就不详说了
第二个办法是遍历界面上的控件
private void test() {
//遍历界面上的控件
int[] layoutIdx =new int[]{R.id.ac_ll_time, R.id.ac_ll_customer, R.id.ac_ll_price, R.id.ac_ll_sum,R.id.ac_ll_nameAndtype, R.id.ac_ll_static, R.id.ac_ll_technology};
for (intj = 0; j < layoutIdx.length; j++) {
ViewGroup sLinerLayout = (ViewGroup) findViewById(layoutIdx[j]);
for (inti = 1; i < sLinerLayout.getChildCount(); i++) {
View v = sLinerLayout.getChildAt(i);
//Toast.makeText(getApplicationContext(), v.getTag().toString(), Toast.LENGTH_SHORT).show();
//得到下一级LinearLayout目录
if(v instanceof LinearLayout) {
//写上你要执行的操作
......}
}
}
}