【问题标题】:select all check box in android listview在 android listview 中选择所有复选框
【发布时间】:2014-02-03 14:58:48
【问题描述】:

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

为此,我尝试了一个ListViewandroid.R.layout.simple_list_item_multiple_choiceListView 中进行多项选择。

我在 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 来选择/取消选择ListView 中的所有CheckBox

   <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。现在,我的 Select All 复选框可以很好地用于选择/取消选择 ListView 中的所有复选框。

但是,如果我在单击全选复选框后取消选择其中一项,则它不会取消选中..

如果我手动选中列表中的所有复选框,则 Select all CheckBox 需要自动选中..

我为 ListAdapter 使用了以下代码

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

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

【问题讨论】:

  • 监听列表内文本框的复选框更改事件
  • 我们如何设置Listen for the checkboxes?
  • 为列表中的复选框添加点击监听器。
  • 保存复选框状态并为每次点击编写onclick监听器并检查保存状态
  • 它不是自定义的 ListView...检查我的更新问题。我在 ListView 中使用了 Android.R.layout.simple_list_item_multiple_choice

标签: android android-listview android-checkbox multiple-choice


【解决方案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);
}

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

希望对你有帮助 祝你好运

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    相关资源
    最近更新 更多