繁体   English   中英

多选复选框选择问题

[英]Checkbox selection issue with multiple selection

我有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);
            }

        }
    }

提前致谢

如果您的用户正在检查“全天”,则例如取消选中“星期四”,则可以使用for循环进行处理。

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

干杯!

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...

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM