2013-05-02 140 views
4

在我的應用程序中,我試圖創建一個帶有多個複選框的列表。選擇Android列表視圖中的所有複選框

因爲我試了一個ListViewandroid.R.layout.simple_list_item_multiple_choice多選ListView

我在XML作爲,ListView控件..

<ListView 
     android:id="@android:id/list" 
     android:layout_width="match_parent" 
     android:layout_height="468dp" 
     android:choiceMode="multipleChoice" 
     android:divider="#b5b5b5" 
     android:dividerHeight="1dp" > 

我用的CheckBox選擇/取消選擇所有CheckBoxListView作爲

<CheckBox 
      android:id="@+id/select_all" 
      android:layout_width="120dp" 
      android:layout_height="wrap_content" 
      android:layout_column="2" 
      android:textSize="18dp" 
      android:text="Select all" /> 

和Java代碼,..

selectall.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      int size = 0; 
      boolean isChecked = selectall.isChecked(); 
      if (isChecked == true) { 
       size = getListView().getCount(); 
       for (int i = 0; i <= size; i++) 
        l1.setItemChecked(i, true); 
      } else if(isChecked==false) 
      { 
       size = getListView().getCount(); 
       for (int i = 0; i <= size; i++) 
        l1.setItemChecked(i, false); 
      } 
     } 
    }); 

在這裏,我已將l1分配爲我的ListView。現在我的全選複選框非常適合選擇/取消選擇ListView中的所有複選框。

但是,如果我取消點擊全選複選框,它不是取消勾選..

如果我在選擇列表中的所有複選框手動方式,選擇所有CheckBox需求後的項目之一自動檢查..

我用下面的代碼ListAdapter

ArrayAdapter<String> adapter1 = new ArrayAdapter<String> 
     (this,Android.R.layout.simple_list_item_multiple_choice,list); 
    setListAdapter(adapter1); 
    l1=getListView(); 

我試圖做到這一點的解決方案..

+0

傾聽的複選框更改事件列表中的文本框 – Triode 2013-05-02 12:01:44

+0

我們如何設置監聽列表中的複選框? – MGR 2013-05-02 12:04:54

+0

爲列表中的複選框添加單擊監聽器。 – Triode 2013-05-02 12:06:34

回答

1

您可以使用HashMap或theObjectRow列表來跟蹤使用布爾值檢查哪個sheckbox。

然後當你點擊checkAll你更新列表中的所有布爾值爲true,並執行yourAdapter.notifyDataSetChanged();

當然在您的適配器(例如baseadapter)中,您使用GetView中的HashMap/List來初始化單元。

if(list.get(position).isChecked()){ 
    cellHolder.checkBox.setChecked(true); 
} 
else{ 
    cellHolder.checkBox.setChecked(false); 
} 

所有布爾處於真正使所有的複選框會被選中(同樣的邏輯也適用於取消)

希望它能幫助 好運