2015-01-27 4 views
2

У меня есть 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); 
      } 

     } 
    } 

Заранее спасибо

+0

Вы не получили результат isChecked() или пользовательский интерфейс не изменяется? – EagleEye

+0

, потому что вы не снимаете флажок «все», если флажок не установлен. – Riad

ответ

0

Если пользователь проверяет все дни затем снимите флажок " Четверг ", например, вы можете обработать это с помощью цикла for.

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

Cheers!

+0

if (! DayNums.get (i) .isChecked) работает, я могу найти только неразумно .... ischecked i can not find – user2806221

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

} 
+0

if (! DayNums.get (i) .isChecked) работает, я могу найти только нецелесообразно .. ..ischecked i can not find – user2806221

+0

исправлено ... должно быть 'isChecked()' – Riad

Смежные вопросы