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

相關問題