Android 复选框列表 - 选中取消选中不起作用 属性

Android checkbox list - check uncheck not working propery

我有带适配器的复选框列表。当用户单击列表中的所有复选框时会收到警报 "all cheked"。当用户单击行时一切正常,但如果他单击复选框,他会更改状态(复选标记)但不执行方法 - onItemClick。有时有些项目会触发方法,但我找不到关系。 当我单击复选框时,chekedValue 不会改变。在这种情况下,用户可以欺骗应用程序 :-)。 我的代码:

 @Override
public void onItemClick(AdapterView<?> arg0, View v, int position,long arg3) {
    // TODO Auto-generated method stub
    CheckBox cb = (CheckBox) v.findViewById(R.id.checkBox1);
    TextView tv = (TextView) v.findViewById(R.id.textView1);

    cb.performClick();
    if (cb.isChecked()) {
        Log.v("Cheked clik OK ","");
        checkedValue.add(tv.getText().toString());
       // tv.setBackgroundResource(R.drawable.linia_przekreslenie);
        checkAllMarks();
    } else if (!cb.isChecked()) {
        Log.v("Cheked clik uncheck ","");
        checkedValue.remove(tv.getText().toString());
       // tv.setBackgroundColor(Color.argb(0, 0, 0, 0));

    }


}

private void checkAllMarks() {

    int sizeCheckedValue = checkedValue.size();
    int sizePackageList1 = packageList1.size();
     Log.v("chekedvalue " + Integer.toString(sizeCheckedValue), "Package " + sizePackageList1);
     Log.v("chekedValue1 " +checkedValue, " ");

    if (sizeCheckedValue == sizePackageList1) {
        AlertDialog.Builder alert = new AlertDialog.Builder(this);
        alert.setTitle(R.string.ready_to_go);

        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {


            }
        });


        alert.show();
    }
}

.....My list_item.xml
<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView1"
    android:layout_alignBottom="@+id/textView1"
    android:layout_alignParentRight="true"
    android:layout_marginRight="16dp"
    android:focusable="false"
    android:clickable="false"
    android:focusableInTouchMode="false" />

问题是,当您单击 ListView 的行时,会调用 onItemClick 事件,但是当您单击复选框时,只会调用复选框事件,而不是 onItemclik,这就是为什么您没有执行所需操作的原因。

你可以做的是在你的适配器中有一个 CheckedChangeListener class 然后你写你的逻辑。

下面的参考检查 link 它包含当您单击它时更改复选框状态的代码。

http://www.androprogrammer.com/2013/10/list-view-with-check-box-using-custom.html