-1

我有一个列表视图,每个项目都有 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 号?)?

4

1 回答 1

0

第一个问题是您根本不需要该handler()方法。CheckBox 的默认行为是检查它何时被单击,而无需调用setChecked(). setChecked()当您想要在标准点击检查/取消选中流程之外显式选中或取消选中 CheckBox 时,通常使用此选项。

但是,如果您真的希望处理程序方法工作(并假设您的所有 CheckBoxeshanlder()在单击时调用),您可能会发现使用传递给函数的 View 会更好,如下所示:

public void handler(View v) {
    CheckBox rb = (CheckBox) v;
    rb.setChecked(true);
}
于 2013-08-13T15:23:19.177 回答