android - studio - Contraer un grupo mediante programación en ExpandableListView
list expandable android (5)
Cuando amplío un nuevo grupo, ¿puedo contraer el último expandido?
Haga esto para expandir el grupo seleccionado y contraer todos los demás.
public void onGroupExpand(int groupPosition)
{
for (int i = 0; i < len; i++)
{
if (i != groupPosition)
{
expandableListDetailsLevel.collapseGroup(i);
}
}
}
Está funcionando para mí.
Muy útil, pero como lo menciona Anh Tuan en los comentarios anteriores, estaba teniendo problemas con ExpandableListView y no volvía a la parte superior del grupo seleccionado actualmente (se mantendría en la posición actualmente desplazada, en el centro del grupo en algún lugar) . También debe agregar un onGroupClickListener () para desplazarse a la posición correcta:
@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 funciono para mi
expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousItem = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousItem )
expandableList.collapseGroup(previousItem );
previousItem = groupPosition;
}
});
Intente colocar esto en su ExpandableListAdapter
, listView
es una referencia a la propia ExpandableListView
. Y lastExpandedGroupPosition
es una variable de miembro entero definida dentro de tu 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;
}
@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);
}