ExpandableListView复制复选框检查

时间:2016-01-25 10:47:04

标签: android

嗨我在android中使用ExpandableListview。我的要求是,必须选择一个组及其子组(使用复选框)。如果我去另一个小组,那么之前选择的小组应该取消选中。

但是当我自动检查第一组时,我的代码会检查最后一组。这是我的问题,下面是我的代码。提前致谢。

listView.setOnGroupClickListener(new OnGroupClickListener(){

            @Override
            public boolean onGroupClick(ExpandableListView parent, View v,
                    int groupPosition, long id) {
                CheckBox last = holder.groupCHeck;
                CheckBox current = (CheckBox) v
                        .findViewById(R.id.groupCheckBox);
                last.setChecked(false);
                current.setChecked(true);
                if (listExpandedPosition.size() >= 1) {
                    if (listExpandedPosition.get(0) != groupPosition) {
                        listView.collapseGroupWithAnimation(listExpandedPosition
                                .get(0));
                        last.setChecked(false);
                    }
                } else {
                }
                if (listView.isGroupExpanded(groupPosition)) {
                    listView.collapseGroupWithAnimation(groupPosition);
                } else {
                    listView.expandGroupWithAnimation(groupPosition);
                }
                if (!listExpandedPosition.isEmpty())
                    listExpandedPosition.clear();
                listExpandedPosition.add(groupPosition);
                holder.groupCHeck = current;
                return true;
            }
        });

2 个答案:

答案 0 :(得分:0)

这是一个常见问题,通常会出现在listview,expandable listview和gridview中。这些小部件不会保持已选中复选框的状态。 看看这个例子,你会明白如何处理...... http://lalit3686.blogspot.in/2012/06/today-i-am-going-to-show-how-to-deal.html

答案 1 :(得分:0)

创建一个SparseBooleanArray或Arraylist并在数组本身中保持Checked和Unchecked状态并相应地设置它,或者如果您使用自定义Java Pojo / Object,则添加另一个字段以获取为已检查/未检查状态设置布尔值。这是一种常见的情况,因为AdapterView会回收用于保存内存的视图和项目。