De una manera ExpandableListView
, ¿hay alguna forma de ocultar el indicador de grupo para grupos sin niños?
108
De una manera ExpandableListView
, ¿hay alguna forma de ocultar el indicador de grupo para grupos sin niños?
Respuestas:
Prueba esto >>>
para todos los artículos
En xml
fuente
La
android:groupIndicator
propiedad toma un estado habilitado para dibujar. Es decir, puede establecer una imagen diferente para diferentes estados.Cuando el grupo no tiene hijos, el estado correspondiente es 'state_empty'
Vea estos enlaces de referencia:
esto y esto
Para
state_empty
, puede establecer una imagen diferente que no sea confusa, o simplemente usar color transparente para no mostrar nada ...Agregue este elemento en su dibujo con estado junto con otros ...
Entonces, su lista de estado puede ser así:
En caso de que esté utilizando una ExpandableListActivity, puede configurar el indicador de grupo en onCreate de la siguiente manera:
He probado que esto funciona.
fuente
Según la respuesta de StrayPointer y el código del blog, puede simplificar el código aún más:
En su xml agregue lo siguiente a ExpandableListView:
Luego, en el Adaptador, haga lo siguiente:
Al usar el método setImageResource, lo hace todo con una sola línea. No necesita las tres matrices Integer en su adaptador. Tampoco necesita un selector XML para estado expandido y contraído. Todo se hace a través de Java.
Además, este enfoque también muestra el indicador correcto cuando un grupo se expande de forma predeterminada lo que no funciona con el código del blog.
fuente
getGroupView()
método de suBaseExpandableListAdapter
implementación. Eche un vistazo a esta implementación de ejemplo .ViewHolder
patrón.indicator
es el nombre de la variable del titular de la vista.Como se menciona en una respuesta diferente, dado que Android trata un grupo de lista no expandido como vacío, el icono no se dibuja incluso si el grupo tiene hijos.
Este enlace me solucionó el problema: http://mylifewithandroid.blogspot.com/2011/06/hiding-group-indicator-for-empty-groups.html
Básicamente, debe establecer el elemento de diseño predeterminado como transparente, mover el elemento de diseño a la vista de grupo como ImageView y alternar la imagen en su adaptador.
fuente
En su código, simplemente use el xml personalizado para la lista de grupos y en eso coloque ImageView para GroupIndicator .
Y agregue las siguientes matrices en su ExpandableListAdapter
también en el método ExpandableListAdapter agregue las mismas cosas que a continuación
Referencia: http://mylifewithandroid.blogspot.in/2011/06/hiding-group-indicator-for-empty-groups.html
fuente
En XML
En
ExpandableListAdapter
->getGroupView
copiar el siguiente códigofuente
esta podría ser otra forma de XML, establecer
android:groupIndicator="@null"
Enlace de referencia: https://stackoverflow.com/a/5853520/2624806
fuente
te sugiero mi solución:
1) Borrar el indicador de grupo predeterminado:
2) en ExpandableAdapter:
fuente
Solo quería mejorar la respuesta de Mihir Trivedi. Puede colocar esto dentro de getGroupView () que está dentro de la clase MyExpandableListAdapter
... y en cuanto a la vista de diseño, así es como parece ser mi group_items.xml
Espero que eso ayude ... recuerda dejar un voto a favor
fuente
Use esto, funciona perfectamente para mí.
fuente
¿Ha intentado cambiar
ExpandableListView
el atributo deandroid:groupIndicator="@null"
?fuente
Simplemente, crea un nuevo diseño xml con altura = 0 para el encabezado del grupo oculto. Por ejemplo, es 'group_list_item_empty.xml'
Entonces el diseño de encabezado de su grupo normal es 'your_group_list_item_file.xml'
Finalmente, simplemente actualice el método getGroupView en su clase de adaptador:
IMPORTANTE : La etiqueta raíz de los archivos de diseño (oculta y normal) debe ser diferente (como en el ejemplo anterior, LinearLayout y RelativeLayout)
fuente
convertView.setVisibility (View.GONE) debería hacer el truco.
fuente