如何取消选中expandable listview中的所有复选框?

时间:2015-12-09 08:51:49

标签: android checkbox expandablelistview

我想取消选中expandable listview子项中的所有复选框,但问题是它只取消选中视图组中的可见复选框。不可见的复选框未被取消选中。请帮帮我。

public void uncheckAllChildrenCascade(ViewGroup vg) {
    for (int i = 0; i < vg.getChildCount(); i++) {
        View v = vg.getChildAt(i);
        if (v instanceof CheckBox) {
            ((CheckBox) v).setChecked(false);
        } else if (v instanceof ViewGroup) {
            uncheckAllChildrenCascade((ViewGroup) v);
        }
    }
}

4 个答案:

答案 0 :(得分:0)

将复选框存储在arrayList:

  final ArrayList<CheckBox> myCheckBoxes = new ArrayList<>();
    final CheckBox checkBox = new CheckBox(this);
    checkBox.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (checkBox.isSelected()){
                myCheckBoxes.remove(checkBox);
            }else{
                myCheckBoxes.add(checkBox);
            }
        }
    });

然后将Checked设置为false:

 for (int i = 0; i < myCheckBoxes.size(); i++) {
        myCheckBoxes.get(i).setSelected(false);
    }

完成了所有CheckBoxes取消选中:)

答案 1 :(得分:0)

您只能取消选中可见的复选框,导致您使用ViewHolder。 你没有列表或存储数据的东西吗? 更改您的列表并致电notifyDataSetChanged()

答案 2 :(得分:0)

  1. 维护父列表的ArrayList。
  2. 在getGroupView中添加一个父复选框。
  3. 如果选中,则将位置的ArrayList值设置为true,否则将其设置为false。
  4. 现在在getGroupView内的这个复选框监听器内调用notifydatasetchanged。
  5. 在getChildView中,如果ArrayList在当前的groupPosition中为true,则选中子复选框,否则取消选中它。 我希望这就是你所需要的。

    moment().startOf('hour').fromNow()

答案 3 :(得分:0)

private final Set<Pair<Long, Long>> mCheckedItems = new HashSet<Pair<Long, Long>>();
final CheckBox cb = (CheckBox) convertView.findViewById(R.id.cb_checkbox);
    RelativeLayout relativelayout=(RelativeLayout) convertView.findViewById(R.id.rl_selected);
    txtListChild.setText(childText);
    final Pair<Long, Long> tag = new Pair<Long, Long>(getGroupId(groupPosition), getChildId(groupPosition, childPosition));
    cb.setTag(tag);
        cb.setChecked(mCheckedItems.contains(tag));
relativelayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (cb.isChecked()) {
                cb.setChecked(false);
                mCheckedItems.remove(tag);
                Shop.iv_shopbyCategory.setVisibility(View.GONE);
                Shop.tv_rl_selectedshopByCategory.setText(" ");
            }
            else
                {
                    mCheckedItems.clear();
                    cb.setChecked(true);
                    mCheckedItems.add(tag);
                    final String SelectedGrouposition=(String) getGroup(groupPosition);
                    final String SelectedChildposition=(String) getChild(groupPosition, childPosition);

                    listAdapter.notifyDataSetChanged();
            }
        }
    });

我有一个可扩展的列表视图,当我点击相对布局时,它会更改选中或取消选中的复选框,当我选择新的检查时,它将删除所有选中的检查..

对我来说它的工作并希望它对你也有用......

试试这个