【问题标题】:Android checkbox list - check uncheck not working properyAndroid复选框列表 - 选中取消选中无法正常工作
【发布时间】:2015-08-04 13:24:06
【问题描述】:

我有带有适配器的复选框列表。当用户单击列表上的所有复选框时,会收到警报“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" />

【问题讨论】:

    标签: android listview checkboxlist


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 2016-04-19
      • 1970-01-01
      • 2013-04-21
      • 2017-04-04
      • 1970-01-01
      相关资源
      最近更新 更多