我有一些复选框,其顶行是该特定列的CheckAll复选框。如果我从最左边的列中的第一个CheckAll复选框中取消选中Checkall,我想取消选中剩余的CheckAll复选框。
然而mycheckbox.setSelected(false)
没有效果。但是,如果我执行了mycheckbox.setEnabled(false)
(就像测试一样),它就可以工作,并且复选框已被禁用。
顺便说一句,这是带有自定义适配器的listview的“标题行”。列表视图的内容按预期工作。
知道如何取消选中复选框吗?
答案 0 :(得分:1)
您应该使用mycheckbox.setChecked(false)
代替setSelected
。
我已经尝试搜索setSelected
以查看它的作用,但在CheckBox的official documentation中,我无法找到它(这告诉我这个方法可能在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
则为TextView
。这意味着setSelected
完全不同,因为textView肯定无法检查/取消选中。
我希望这能很好地解释它。