Al expandir un nuevo grupo, ¿puedo colapsar el último expandido?Colapsar mediante programación un grupo en ExpandableListView
Respuesta
Trate de poner esto en su ExpandableListAdapter
, listView
es una referencia al ExpandableListView
sí mismo. Y lastExpandedGroupPosition
es una variable de miembro entero definida dentro de su 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;
}
hacer esto para expandir el grupo hecho clic y el colapso de todos los demás
public void onGroupExpand(int groupPosition)
{
for (int i = 0; i < len; i++)
{
if (i != groupPosition)
{
expandableListDetailsLevel.collapseGroup(i);
}
}
}
que está funcionando para mí.
Muy útil, pero como Anh Tuan menciona en los comentarios anteriores, estaba teniendo problemas con la ExpandableListView que no se desplazaba hacia la parte superior del grupo seleccionado actualmente (se mantendría en la posición actualmente desplazada, en el centro de grupo en algún lugar). También es necesario agregar un onGroupClickListener() para desplazarse hasta 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;
}
Hey groupPosition siempre es return zero me puede guiar –
Aunque técnicamente este truco, no se ve bonito. ¿Alguna recomendación para que se vea mejor? – erkinyldz
Bien, estoy respondiendo mi propia pregunta. Si llama a parent.setSelection (groupPosition) se ve mucho mejor. Tenga en cuenta que debe invocarse después de la lógica de expansión o colapso grupal, no antes. – erkinyldz
@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);
}
This trabajó para mí
expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousItem = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousItem)
expandableList.collapseGroup(previousItem);
previousItem = groupPosition;
}
});
Oye, este código funcionó para mí ... –
- 1. En un ExpandableListView, ¿cómo detectar el colapso del grupo?
- 2. Android LongClickListener en elementos del grupo ExpandableListView
- 3. Android ExpandableListView posición de grupo siempre 0
- 4. Cómo ocultar el grupo en ExpandableListView en android
- 5. ExpandableListView con un EditText
- 6. Grupos fijados en ExpandableListView
- 7. mediante programación en C#
- 8. aumentar mediante programación un comando
- 9. crear mediante programación un UILabel
- 10. ExpandableListView dentro de ExpandableListView
- 11. Descargar un archivo mediante programación en Android
- 12. Instalar un ensamblaje en GAC mediante programación
- 13. Android ExpandableListView oyente de clic de grupo largo prevenir expand
- 14. Agregar vistas a un grupo de vista de Android mediante programación
- 15. Agregar un onClickListener en GroupIndicator predeterminado en ExpandableListView
- 16. Generar propiedades mediante programación
- 17. Editando Web.config mediante programación
- 18. ¿Consulta mediante programación MSDN?
- 19. Agregar PageControl mediante programación
- 20. ExpandableListView Group View Expandir Predeterminado
- 21. Cómo reiniciar mediante programación?
- 22. creando uiview mediante programación?
- 23. Deshabilitar mediante programación window.location.reload?
- 24. crear un control mediante programación utilizando MFC
- 25. Cómo desplazarse mediante programación un HorizontalScrollView
- 26. Generar mediante programación un proyecto de Eclipse
- 27. ¿Cómo finalizo/reinicié un UIGestureRecognizer mediante programación?
- 28. ¿Cómo restaurar un formulario mediante programación?
- 29. ¿Cómo añadir un NSTableView desplazable mediante programación
- 30. ¿Cómo elimino un dominio DNS mediante programación?
Vaya hombre, perfecto! :) ¡MUCHAS GRACIAS! : D –
No hay problema. Hice esto por una aplicación hace un tiempo. Me alegro de que podría ayudar a alguien más. – danh32
Existe un problema con su solución: el nuevo grupo expandido se desplazará hasta la altura del último grupo (que está cerrado). Pero gracias de cualquier manera. –