4

在我的应用程序中,我尝试创建一个包含多个复选框的列表。

为此,我尝试了其中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来选择/取消选择asCheckBox中的所有内容ListView

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

我正在努力实现这个解决方案..

4

1 回答 1

1

您可以使用 HashMap 或 theObjectRow 的 List跟踪使用布尔值检查了哪个 sheckbox。

然后当您单击checkAll时,您将列表中的所有布尔值更新为 true 并执行 yourAdapter.notifyDataSetChanged();

当然,在您的适配器(例如 baseadapter)中,您使用 GetView 中的 HashMap/List 来初始化单元格。

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

所有布尔值都为真,因此所有复选框都将被选中(取消选中的逻辑相同)

希望它有助于祝你好运

于 2013-06-18T10:14:20.157 回答