Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: Obtención de un recuento de los niños visibles en una vista de lista

¿Hay manera de obtener un recuento del número de niños listview visibles?

Tengo un listview con información vinculada a una base de datos que puede cambiar en cualquier momento. Cuando se cambia la base de datos, envío una emisión notificando la clase ui que maneja la vista de lista. A continuación, se actualiza el elemento secundario relativo a los datos modificados. Estoy logrando esto dando a cada elemento listview una etiqueta y luego iterando sobre las vistas de lista para encontrar la fila que coincide con la etiqueta de la emisión.

Quiero solamente iterar sobre los niños visibles. No es necesario actualizar manualmente las vistas que no son visibles, ya que reflejarán los nuevos datos cuando se creen. Actualmente iterar desde listView.getfirstVisiblePosition () a listView.getChildCount (). Esto es mejor que nada, ya que no examino filas por encima de las filas visibles, pero tampoco quiero examinar las filas debajo de ellas.

Revisé la página de lista de desarrolladores de Android y no encontré nada. Alguien sabe de una manera que puedo obtener el recuento de los niños visibles?

¡Gracias!

3 Solutions collect form web for “Android: Obtención de un recuento de los niños visibles en una vista de lista”

ListView.getLastVisiblePosition (), ¿es esto lo que estás buscando? Si no, la iteración a través de las opiniones de los niños …

int count = 0; for (int i = 0; i <= listView.getLastVisiblePosition(); i++) { if (listView.getChildAt(i) != null) { count++; // saying that view that counts is the one that is not null, // because sometimes you have partially visible items.... } } 

Esta es una manera rápida de obtener el número de niños visibles:

 int visibleChildCount = (listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1; 

En referencia al comentario de greg7gkb anterior – sólo quería señalar en caso de que alguien está usando esto que hará que su cuenta por uno. Debería ser

 (listView1.getLastVisiblePosition() - listView1.getFirstVisiblePosition()) + 1 

Por lo tanto, si el último visible era 8 y el primero visible era 5 , tendría (8-5) +1 = 4 mostrando: 5,6,7 y 8.

Parece que A. Abiri lo consiguió justo debajo.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.