我正在创建一个带有自定义适配器的ListView来显示我的条目。每行包含一个复选框,我的适配器包含以下代码:
CheckBox cb = (CheckBox) v.findViewById(R.id.item_sold);
cb.setChecked(p.isSold);
setupCheckboxListener(cb, v, position);
...
private void setupCheckboxListener(CheckBox check, final View v, final int position) {
check.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CheckBox cb = (CheckBox) v;
if (cb.isChecked()) {
System.out.println("Should become false!");
cb.setChecked(false);
} else {
System.out.println("Should become true!");
cb.setChecked(true);
}
}
});
我的行XML文件包含以下内容:
<CheckBox android:id="@+id/item_sold"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.10"
android:layout_gravity="center"
android:gravity="center"
android:focusable="false"
android:clickable="false"/>
但是每当我按下其中一个复选框时,check.isChecked()都会返回true,即使该框未选中也是如此。我甚至检查过以确保复选框是不同的,并且没有仅仅获取最后一个值/ etc。
设置内联侦听器而不是方法似乎也没有帮助。它实际上只是isChecked()条件不能正常工作 - 似乎总是给我反值。
在这种情况下,在行上设置onClick是不可接受的,因为我需要允许其他行的行选择。
可能导致此问题的原因是什么?