2010-11-30 84 views

回答

118

试着把它放在您的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; 
    } 
+3

哇人,当场! :) 非常感谢你! :D – 2010-11-30 16:07:35

+2

没问题。一段时间后,这是为了一个应用程序。很高兴它可以帮助别人。 – danh32 2010-11-30 16:48:14

+4

解决方案存在问题:新展开的组将被滚动至最后一个组的高度(已关闭)。不过谢谢。 – 2012-02-27 05:00:34

4

这样做是为了扩大点击组,并折叠所有其他

public void onGroupExpand(int groupPosition) 
{ 
    for (int i = 0; i < len; i++) 
    { 
     if (i != groupPosition) 
     { 
      expandableListDetailsLevel.collapseGroup(i); 
     } 
    } 
} 

它为我工作。

20

非常有帮助,但作为Anh Tuan在上面的评论中提到,我遇到了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; 
} 
2
@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); 
    } 
17

This工作对我来说

expandableList.setOnGroupExpandListener(new OnGroupExpandListener() { 
    int previousItem = -1; 

    @Override 
    public void onGroupExpand(int groupPosition) { 
     if(groupPosition != previousItem) 
      expandableList.collapseGroup(previousItem); 
     previousItem = groupPosition; 
    } 
}); 
相关问题