Android复选框列表 - 选中取消选中不工作的属性

时间:2015-08-04 13:24:07

标签: android listview checkboxlist

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

 @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" />

1 个答案:

答案 0 :(得分:0)

问题是,当你点击ListView的行时,会调用onItemClick事件,但是当你点击复选框时,只调用复选框事件而不是onItemclik,这就是为什么你想要的操作不执行的原因。

你可以做的是在你的适配器类中有一个 CheckedChangeListener ,并在那里写下你的逻辑。

对于参考检查链接,它包含的代码会在您单击时更改复选框的状态。

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