mycheckbox.setSelected(false)无效

时间:2016-06-29 14:43:28

标签: android checkbox selectall

我有一些复选框,其顶行是该特定列的CheckAll复选框。如果我从最左边的列中的第一个CheckAll复选框中取消选中Checkall,我想取消选中剩余的CheckAll复选框。

然而mycheckbox.setSelected(false)没有效果。但是,如果我执行了mycheckbox.setEnabled(false)(就像测试一样),它就可以工作,并且复选框已被禁用。

顺便说一句,这是带有自定义适配器的listview的“标题行”。列表视图的内容按预期工作。

知道如何取消选中复选框吗?

1 个答案:

答案 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肯定无法检查/取消选中。

我希望这能很好地解释它。