¿Cómo se comprueba si un ListView contiene un encabezado especificado?

He intentado usar el método ListView.indexOfChild (ver vista) para comprobar si el ListView contiene una vista de encabezado especificada, pero a veces devuelve -1 cuando el ListView realmente contiene un encabezado especificado. ¿Hay una mejor manera de comprobar esto?

Si por 'encabezado' quiere decir un encabezado real agregado utilizando cualquiera de los addHeaderView(...) , simplemente puede recuperar el número de encabezados añadidos usando getHeaderViewsCount() .

Como alternativa, si recuerdo correctamente, ListView envolverá su adaptador dentro de un HeaderViewListAdapter si contiene encabezados y / o pies de página. Puede usar su getHeadersCount() para recuperar el mismo número que el de arriba.


Editar: Si desea comprobar si se agrega un encabezado específico, debería poder consultar el HeaderViewListAdapter para ello. Necesitará algún tipo de criterio para comprobarlo.

Por ejemplo, si hay 3 encabezados en su ListView , puede iterar sobre los tres primeros elementos (probablemente puede agarrarlos directamente desde HeaderListViewAdapter o usar el método getItemAtPosition(...) ListView ) y ver si uno Coincide con los criterios. La forma más fácil de hacer esta 'coincidencia' es probablemente añadir encabezados utilizando el addHeaderView(...) que también toma un parámetro Object . Usted puede suministrar básicamente cualquier cosa para diferenciar entre los múltiples encabezados, obviamente siempre que los objetos de datos son diferentes. Por ejemplo, podría pasar una cadena.

Con estos datos en su lugar, puede llamar a getItem(...) / getItemAtPosition(...) para las primeras 3 posiciones y comprobar lo que se devuelve. La ventaja de usar una String para datos es que cada objeto Java implementa un método toString() , que luego puede explotar para una .equals(..) directa de .equals(..) .

Como alternativa, puede utilizar la reflexión para obtener ahold de la variable miembro mHeaderViewInfos real (que es sólo un ArrayList<ListView.FixedViewInfo> ) y utilizarlo para la lógica condicional.

  • Cómo mostrar letras alfabéticas en el lado de Android ListView
  • BaseAdapter ListView Filtrado de Android
  • Quitar sombra de arriba y abajo de ListView en android?
  • ¿Cómo obtener la vista de un elemento ListView?
  • Android: vista de la lista de identificaciones
  • Aplicación de la burbuja de chat de Android en ListView
  • Obtener java.lang.ArrayIndexOutOfBoundsException en android
  • SetOnItemClickListener en ListView personalizado
  • ListView personalizado de Android, setOnItemSelectedListener no funciona
  • Cómo obtener los elementos de lista siguiente y anterior de un listview en android
  • Enumerar actividad con encabezado, pie de página y vacía todo visible
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.