嗨我在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;
}
});
答案 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会回收用于保存内存的视图和项目。