Red de conocimiento informático - Material del sitio web - ¿Cómo implementar una vista de lista que se ajuste dinámicamente para ocultar el título?

¿Cómo implementar una vista de lista que se ajuste dinámicamente para ocultar el título?

Requisito: Dependiendo de sus necesidades, es posible que necesite ajustar dinámicamente el encabezado y el pie de página de la vista de lista, por ejemplo usando el encabezado como panel de visualización.

Dificultades

Puntos clave: el método listView.addHeaderView() debe llamarse antes que el método setAdapter(); de lo contrario, se generará una excepción. En cuanto a por qué se produce la excepción, consulte el código fuente de

ListView. Entonces, si desea eliminar u ocultar headerView después de configurarlo, debe hacer un gran rodeo: guarde el adaptador

- elimine headerView - (o reemplace headerView) - y luego configure el adaptador en encima. Método para ocultar headerView:

Intente utilizar el atributo View.GONE para ocultarlo. La estructura 1.itemView es la siguiente: lt; LinearLayout

android:id="@ id/item_root" android:layout_width= "" fill_parent"

android:layout_height="50dip" android:orientation="vertical"

gt;lt;TextView android:id="@ id/tv_1 " /gt; .lt;Vista de texto

android: id="@ id/tv_2" /gt;lt;/LinearLayout gt; En este momento, existe la siguiente lógica: ListView

listView = xxxx; listView.addHearderView(item_root);

listView.setAdapter(adapter); adaptador.add(xxxxx); agregar datos

item_root.setVisibility(View. GONE); Por cierto, la última oración debería poder ocultar el headerView, pero el efecto real (probado en MX) es que no hay control en item_root, pero la altura de 50 dips ocupada por item_root aún existe. en otras palabras, el headerView original se convierte en

¡Un área en blanco! El efecto de View.INVISIBILE es el mismo, ¡Khan está muerto! height="50dip" android: orientación="vertical" gt; >

lt; LinearLayout android :id="@ id/item_container" lt; TextView

android.id="@ id/tv_1" /gt; /tv_2" /gt;

lt;/LinearLayoutgt;lt;/LinearLayoutgt;

Esta estructura agrega un diseño adicional (item_container) para encapsular los controles internos del elemento.

En este punto, si configuraVisibility(View.GONE)

.setVisibility(View.GONE) en item_container, ¡puede lograr perfectamente el propósito de ocultar HeaderView! Conclusión: Parece que la propiedad View.GONE no funciona en el diseño raíz

. Nuevo problema: si se utiliza un fondo de forma en item_root y existe un tamaño mínimo para ese fondo, este método volverá a fallar. Solución alternativa: si

debe agregar un fondo a HeaderView, establezca el fondo en item_container en lugar de en

item_root para evitar nuevos problemas.