tutorial studio item expandablelist ejemplo desplegable android expandablelistview

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); }