为啥 checkbox.IsChecked() 不返回选中状态
Posted
技术标签:
【中文标题】为啥 checkbox.IsChecked() 不返回选中状态【英文标题】:Why does checkbox.IsChecked() not return the checked state为什么 checkbox.IsChecked() 不返回选中状态 【发布时间】:2016-03-16 00:39:08 【问题描述】:从关于 isChecked()
无法在 android 中运行的大量问题中,我已经接受了要获得 checkbox
的检查状态,您需要添加一个侦听器。但我只是想知道是否有人知道它为什么不能正常工作,这是一个错误吗?我是否误解了所需的功能?
这里有一些代码供您参考。
View itemView = adapter.getView(i, null, autoDiscoverListView);
CheckBox selected = (CheckBox)itemView.findViewById(R.id.cbEnabled);
if(selected.isChecked())
...
这是getView中与复选框相关的代码
CheckBox cbEnabled = (CheckBox) convertView.findViewById(R.id.cbEnabled);
cbEnabled.setChecked(item.getEnabled());
cbEnabled.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
public void onCheckedChanged(CompoundButton compoundButton, boolean enabled)
...
);
【问题讨论】:
你有没有通过在sysout上打印selected.isChecked()的值来检查.. Logcat 你能用xml发布完整的代码吗? 它似乎正在工作...***.com/questions/18336151/… 默认不勾选..thtsy返回false..你必须添加listner 您的 CheckBox 似乎在 ListView 项目布局中。如果您在其中的某些侦听器中得到错误的检查状态,我们需要查看您的getView()
方法。
【参考方案1】:
我认为你的代码有错误,请尝试如下,
public void itemClicked(View v)
//code to check if this checkbox is checked!
CheckBox checkBox = (CheckBox)v;
if(checkBox.isChecked())
【讨论】:
好的,所以如果我添加一个 onClickListener 那么它确实可以正常工作,但是你能用我的错误来编辑答案吗?为什么我无法使用(CheckBox)itemView.findViewById(R.id.cbEnabled);
获得复选框【参考方案2】:
你必须使用like。
//返回此视图的启用状态。
selected.isEnabled()
//如果启用此视图,则返回 True,否则返回 false。
//表示视图当前是否处于按下状态。
selected.isPressed()
//如果启用此视图,则返回 True,否则返回 false。
【讨论】:
感谢您的回答,如果您查看我的代码,那么希望很明显我正在使用已启用,我的问题是即使它是错误的,它也会返回 true。抱歉,如果我的问题对您不明确。 也许你不应该检查类的 onCreate() 中的状态。 我不是,对不起,我不明白你在哪里做出这些假设,为了更好地表达我的帖子,请你告诉我你是如何得出你的结论的。我认为这很明显,但显然不是。【参考方案3】:我知道isChecked
() 方法正常工作。我怀疑你没有得到正确的观点。目前,我只有一个建议,因为我不太了解您的代码。
View itemView = adapter.getView(i, null, convertView);
注意:此代码在您设置侦听器时引用 View 对象convertView
。至少convertView
对听众有效。
【讨论】:
以上是关于为啥 checkbox.IsChecked() 不返回选中状态的主要内容,如果未能解决你的问题,请参考以下文章
如何在不引发事件的情况下设置 checkbox.isChecked