如何在ListView中捕获checkbox事件

coo*_*eep 1 checkbox android listview android-arrayadapter android-listview

我在ListView中只添加了复选框.
list_checkbox.xml:
<?xml version="1.0" encoding="utf-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="42px">
</CheckBox>

在java中; 在列表中捕获事件我使用过::

items1={" "," "," "," "}; //blank i.e. no text near checkbox

lv1.setAdapter(new ArrayAdapter<String>(this, R.layout.list_checkbox, items1));
lv1.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

      // When clicked,put code here.....
    }
  });
Run Code Online (Sandbox Code Playgroud)

但现在在哪里以及如何捕获复选框事件? 详细plz.
我是新手.
感谢名单..

bal*_*azs 6

如果您将ListView放入可聚焦或可点击的视图中,那么您的OnItemClickListener将不会被调用.默认情况下可以单击复选框,因此在这种情况下设置OnItemClickListener将不会执行任何操作.

在这种情况下,您可以执行的是实现自定义适配器(只需扩展ArrayAdapter)并将OnClickListener添加到您为ListView提供的每个View.

public class TestAdapter extends ArrayAdapter {
    ...
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = super.getView(position, convertView, parent);
        v.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // Do your logic here eg. if ((CheckBox)v).isChecked()...
             }
         });
         return v;
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到关于这个主题的非常好的教程.值得一读整章,但问题的答案在第112页,Interactive Rows.

另请参阅 Stack Overflow问题.