В моем коде я setOnCheckedChangeListener до установки начального значения на CheckBox, но метод слушателя не вызывается после установки начального значения:
final CheckBox check_box = convertView.findViewById(R.id.check_box);
check_box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// Some logic
}
}
После строки выше я установил начальное значение для CheckBox следующим образом:
if (isConditionTrue) {
check_box.setChecked(true);
} else {
check_box.setChecked(false);
}
}
Но метод слушателя onCheckedChanged никогда не вызывался, когда программно изменял значение проверки с помощью метода setChecked(), но когда пользователь изменяет его через отображение, он вызывается. Это нормальное поведение или я неправильно его реализовал?
Попробуйте изменить его с отмеченного на выбранный
setOnCheckedChangeListener() вызывается при изменении отмеченного состояния этой кнопки. Однако, глядя на ваш код, похоже, что состояние флажка не меняется.
if (isConditionTrue) {
check_box.setChecked(true);
} else {
check_box.;
}
}
Если isConditionTrue имеет значение false и check_box уже не отмечен, то setChecked(false) не приведет к вызову setOnCheckedChangeListener. То же самое относится и к уже отмеченному флажку, и вы пытаетесь использовать setChecked(true);.
ваше предложение кажется верным, поскольку его состояние по умолчанию не отмечено, и я установил его setChecked (false), из-за чего он не запускал метод слушателя, спасибо :)
@pcj отлично! Наслаждайтесь кодированием :-)
Да, это нормальное поведение. Поскольку слушатель прикреплен к флажку, когда вы измените его в пользовательском интерфейсе приложения, он вызовет. Но если вы измените его программно, он не будет выполняться.
Каково начальное состояние вашего флажка? Проверено не отмечено? А в чем ценность
isConditionTrue?