¿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?
- Cómo limitar la selección de casilla de verificación en listview?
- Android ListView setOnScrollListener
- ¿Por qué los elementos de ListView no crecen para envolver su contenido?
- Adición de encabezados a una vista de lista de Android
- Seleccione sólo un botón de radio a la vez en la vista de lista personalizada, android
- Poner un anuncio nativo de AdMob en una listaVer
- Cómo configurar Listener En el texto Editar de la vista de lista personalizada en android
- Llamar al método setEmpty de ListView no funciona (no se muestra nada cuando la lista está vacía)
- Android ListView con el botón de opción
- Disposición personalizada de Android para listview
- Cómo puedo tamaño de forma automática listview para que no se desplaza
- Cómo agregar un elemento secundario en Android ListView?
- UIAutomator haga clic en la vista de lista basada en el índice
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.
- Signin de Google+: handleSignInResult devuelve false después de personalizar el botón de inicio de sesión
- ¿Cómo puedo iniciar una URL desde mi aplicación en Android?