Quand j'ai développer un nouveau groupe, puis-je l'effondrement de la dernière élargi?
Réponses
Trop de publicités?Essayer de mettre cela dans votre ExpandableListAdapter
, listView
est une référence à l' ExpandableListView
lui-même. Et lastExpandedGroupPosition
est un entier, membre de la variable définie à l'intérieur de votre 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;
}
Très utile, mais comme Anh Tuan mentionne dans les commentaires ci-dessus, j'ai eu des problèmes avec la ExpandableListView pas alors de défilement vers le haut de le groupe actuellement sélectionné (il serait rester à la actuellement à volutes position, au milieu du groupe, quelque part). Vous devez également ajouter un onGroupClickListener() pour faire défiler jusqu'à la position correcte:
@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;
}
Cela a fonctionné pour moi
expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousItem = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousItem )
expandableList.collapseGroup(previousItem );
previousItem = groupPosition;
}
});