1

我只在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>
如何捕获ListView中的复选框事件

在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..... 
    } 
    }); 

但现在在哪里以及如何捕捉复选框的事件吗? 详细地址plz。
我是新手。
thanx ..

+0

你已经回答了你自己。在onItemClick你已经在那里评论你的答案。接下来的问题是当一个项目被点击时你想要做什么。 – apesa 2011-04-03 16:43:58

+0

亚那是什么时候在列表中点击一个项目。 我想捕获一个复选框。当第一个复选框被选中时,调用函数A如果第三个被选中,调用函数B等等。 – cooldeep 2011-04-06 12:09:55

回答

6

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

在这种情况下你可以做的是实现一个自定义的适配器(只需扩展ArrayAdapter)并将OnClickListener添加到为ListView提供的每个视图中。

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; 
    } 
} 

你可以在这个主题here找到一个非常好的教程。这是值得阅读整章,但你的问题的答案是在第112页,互动行。

另请参见this堆栈溢出问题。

+0

ya il试试这个并取回2 u .. thanx .. – cooldeep 2011-04-06 12:13:44

+0

好的答案和伟大的指向commonsware – apesa 2011-04-07 14:11:13