2016-01-22 1 views
1

UI SampleСостояние коммутатора Android-коммутатора

Я хочу изменить состояние дочерних переключателей с родительского коммутатора.

вкратце:

случай 1: Родитель дальше -> все Ребенок переходит на

случай 2: Родитель выключен -> Все для детей выключает

случай 3: Ребенок 2 выкл (ребенок 1 & 3 ON) -> родитель на

Выпуск Когда я вкл/выкл все дочерние выключатели родитель выключатель должен вкл/соответственно.

ниже мой код в коде случае 1,2 & 3 работает нормально.

switchParent.setOnCheckedChangeListener (новый CompoundButton.OnCheckedChangeListener() {

 @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 

      if (b) { 

       switchChild1.setChecked(true); 
       switchChild2.setChecked(true); 
       switchChild3.setChecked(true); 

      } else { 

       switchChild1.setChecked(false); 
       switchChild2.setChecked(false); 
       switchChild3.setChecked(false); 

      } 
     } 
    }); switchChild1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      setState(); 
     } 
    }); 

    switchChild2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      setState(); 
     } 
    }); 


    switchChild3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

     @Override 
     public void onCheckedChanged(CompoundButton compoundButton, boolean b) { 
      setState(); 
     } 
    }); 

SetState()

частная пустота SetState() {

if (switchChild1.isChecked() || switchChild2.isChecked() || switchChild3.isChecked()) { 

     switchParent.setChecked(true); 

    } else { 

     switchParent.setChecked(false); 

    } 

} 

Я буду признателен любая помощь.

ответ

1

Измените метод setState().

private void setState() { 
if (switchChild1.isChecked() && switchChild2.isChecked() && switchChild3.isChecked()) { 
    switchParent.setChecked(true); 
} else { 
    switchParent.setChecked(false); 
} 

}

+0

Я попробовал ваш код, но когда все переключатели ON и я стараюсь OFF любой один ребенок переключатель, то все изменения состояния переключения автоматически отключается. – Aks4125