CheckBox不会在Android ListView中切换,其中focusable =“false”

时间:2014-05-31 15:22:22

标签: android listview checkbox listadapter

我正在创建一个带有自定义适配器的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是不可接受的,因为我需要允许其他行的行选择。

可能导致此问题的原因是什么?

0 个答案:

没有答案