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

所有布尔处于真正使所有的复选框会被选中(同样的逻辑也适用于取消)

希望它能帮助 好运