【发布时间】:2011-05-17 22:02:51
【问题描述】:
当我展开一个新组时,我可以折叠最后一个展开的组吗?
【问题讨论】:
标签: android expandablelistview
当我展开一个新组时,我可以折叠最后一个展开的组吗?
【问题讨论】:
标签: android expandablelistview
试着把它放在你的ExpandableListAdapter 中,listView 是对ExpandableListView 本身的引用。而lastExpandedGroupPosition 是在ExpandableListAdapter 中定义的整数成员变量。
@Override
public void onGroupExpanded(int groupPosition){
//collapse the old expanded group, if not the same
//as new group to expand
if(groupPosition != lastExpandedGroupPosition){
listView.collapseGroup(lastExpandedGroupPosition);
}
super.onGroupExpanded(groupPosition);
lastExpandedGroupPosition = groupPosition;
}
【讨论】:
非常有帮助,但正如Anh Tuan 在上面的 cmets 中提到的那样,我遇到了 ExpandableListView 的问题,它没有滚动回当前选定组的顶部(它将停留在当前滚动的位置,在某处的小组)。您还需要添加一个 onGroupClickListener() 以滚动到正确的位置:
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition,
long id) {
// Implement this method to scroll to the correct position as this doesn't
// happen automatically if we override onGroupExpand() as above
parent.smoothScrollToPosition(groupPosition);
// Need default behaviour here otherwise group does not get expanded/collapsed
// on click
if (parent.isGroupExpanded(groupPosition)) {
parent.collapseGroup(groupPosition);
} else {
parent.expandGroup(groupPosition);
}
return true;
}
【讨论】:
This 为我工作
expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousItem = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousItem )
expandableList.collapseGroup(previousItem );
previousItem = groupPosition;
}
});
【讨论】:
执行此操作以展开单击的组并折叠所有其他组
public void onGroupExpand(int groupPosition)
{
for (int i = 0; i < len; i++)
{
if (i != groupPosition)
{
expandableListDetailsLevel.collapseGroup(i);
}
}
}
它对我有用。
【讨论】:
@Override
public void onGroupExpanded(int groupPosition) {
for(int i=0;i<mGroupCollection.size();i++){
if(i==groupPosition){
System.out.println("Nothing");
}
else{
mExpandableListView.collapseGroup(i);
}
}
super.onGroupExpanded(groupPosition);
}
【讨论】: