我有一个列表视图,每个项目都有2个复选框,如果选中另一个复选框,我想要自动检查其中一个(即在同一项目中)。但我得到的结果是,当我检查任何项目中的第二个复选框时,它是第一个检查项目的第一个复选框! (而不是在同一个项目中)
xml中的复选框代码: `
<CheckBox
android:id="@+id/checkBox4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox"
android:onClick="handler"
/>`
函数处理程序的代码:
`
public void handler(View v) {
CheckBox rb = (CheckBox) findViewById(R.id.checkBox3);
rb.setChecked(true);
} `
有没有人知道如何解决它并指出要检查的复选框是同一项中的复选框(它具有相同的ID号?)?
答案 0 :(得分:0)
第一个问题是你根本不需要handler()
方法。 CheckBox的默认行为是检查何时单击它,而不调用setChecked()
。当您想要在标准点击检查/取消选中流程之外显式检查或取消选中CheckBox时,通常会使用setChecked()
。
但是,如果你真的想让处理程序方法工作(假设你的所有CheckBox都在点击时调用hanlder()
),你可能会发现使用传递给函数的View有更好的运气:
public void handler(View v) {
CheckBox rb = (CheckBox) v;
rb.setChecked(true);
}