具有多个选择的复选框选择问题

时间:2015-01-27 09:20:02

标签: java android

我有8个复选框,指的是工作日,周日到周六,以及所有日期的一个。问题是如果我选择所有的日子它来了。但我检查所有并取消选中某些天意味着它没有反映在我的结果中,结果仍然是这里所有的日子都是我的代码

public void onClick(View v) {
        if (v == btnSave) {
            days.clear();
            if (all.isChecked()) {

                days.add("Su");
                days.add("Mo");
                days.add("Tu");
                days.add("We");
                days.add("Th");
                days.add("Fr");
                days.add("Sa");
            } else {
                if (sun.isChecked()) {
                    days.add("Sun");
                }
                if (mon.isChecked()) {
                    days.add("Mon");
                }
                if (tue.isChecked()) {
                    days.add("Tue");
                }
                if (wed.isChecked()) {
                    days.add("Wed");
                }
                if (thur.isChecked()) {
                    days.add("Thu");
                }
                if (fri.isChecked()) {
                    days.add("Fri");
                }
                if (sat.isChecked()) {
                    days.add("Sat");
                }
            }

            Log.d("my days are ", "size is " + days.size());
            myPreference.setNumberOfPractiseDays("TOTAL_NUMBER_OF_DAYS",
                    days.size());
            for (int i = 0; i < days.size(); i++) {
                myPreference.setPractiseDays("DAYS" + i, days.get(i));
            }
            finish();

        } else if (v == all) {
            if (all.isChecked()) {
                sun.setChecked(true);
                mon.setChecked(true);
                tue.setChecked(true);
                wed.setChecked(true);
                thur.setChecked(true);
                fri.setChecked(true);
                sat.setChecked(true);

            } else {
                sun.setChecked(false);
                mon.setChecked(false);
                tue.setChecked(false);
                wed.setChecked(false);
                thur.setChecked(false);
                fri.setChecked(false);
                sat.setChecked(false);
            }

        }
    }

提前致谢

2 个答案:

答案 0 :(得分:0)

如果您的用户正在检查所有天数,那么取消选中“星期四”,例如您可以使用for循环来处理它。

for(int i = 0; i < days.size(); i++){
   if(!days.get(i).isChecked){
      all.uncheck();
   }
}

干杯!

答案 1 :(得分:0)

if (v == btnSave) {
    days.clear();

   //modify starts

   for(int i = 0; i < dayNums.size(); i++){
      if(!dayNums.get(i).isChecked()){  // here dayNums is an array with values like ("sun", "mon")
         all.setChecked(false); 
         break;
      }
   }

   // modify ends

   // rest of the codes...

}