2016-06-29 5 views
2

У меня есть столбцы флажков, верхняя строка которых - флажки CheckAll для этого конкретного столбца. Если я сниму флажок Checkall из первого флажка CheckAll в крайнем левом столбце, я хотел бы снять флажки с остальными флажками CheckAll.mycheckbox.setSelected (false) не имеет эффекта

Однако mycheckbox.setSelected(false) не действует. Если, однако, я делаю mycheckbox.setEnabled(false) (точно так же, как тест), он работает, и флажок отключен.

Кстати, это «строка заголовка» для списка с пользовательским адаптером. Содержимое списка работает так, как ожидалось.

Любая идея, как снять флажок?

+0

Пожалуйста, внесите свой код. – Vucko

ответ

1

Вы должны использовать mycheckbox.setChecked(false) вместо setSelected.

Я попытался найти setSelected, чтобы увидеть, что он делает, но в official documentation из CheckBox, я не смог найти (который предложил мне, что этот метод, вероятно, находится в одном из классов родитель от CheckBox). Пробовал вводить его в Android Studio:

CheckBox cb = new CheckBox(getApplication()); 
cb.setSelected(true); 

Ходила к реализации метода (CTRL+Click) и увидел это в классе TextView, от которого происходит почти каждый виджет:

@Override 
public void setSelected(boolean selected) { 
    boolean wasSelected = isSelected(); 

    super.setSelected(selected); 

    if (selected != wasSelected && mEllipsize == TextUtils.TruncateAt.MARQUEE) { 
     if (selected) { 
      startMarquee(); 
     } else { 
      stopMarquee(); 
     } 
    } 
} 

Интересно отметить, что метод setChecked содержится в классе CompoundButton, а setSelected is is TextView. Это означает, что setSelected делает что-то совершенно другое, потому что textView не может быть проверен/не установлен.

Надеюсь, это объяснит это хорошо.

+1

Упс. Мне нужно немного поспать. Благодарю. – RVDowning

+0

А, не бить себя. Это ошибка, но объяснение этого не наивно. 'setSelected' является довольно неоднозначным в этом контексте, чтобы быть справедливым. – Vucko

+1

omg так много лет программирования Android, и я все еще застрял в ошибке, как этот hahahaha (позор) xD – MiguelHincapieC