Cómo obtener el número de elementos visibles en ListView
El proyecto necesita contar los datos de cada elemento "expuesto" en la vista de lista, es decir, a medida que se mueve el deslizamiento, un elemento cambia de invisible a visible, entonces necesito obtener el índice de este elemento. para que se realicen operaciones de seguimiento. Por supuesto, si un elemento ya está visible, si no se saca de la pantalla al deslizarlo, ya no estará "expuesto" para evitar una "exposición" repetida, pero cuando se extraiga el elemento que ha sido "expuesto". fuera de la pantalla La pantalla rayada se vuelve visible, luego es necesario "exponerla" nuevamente. La solución es la siguiente:
Implemente la interfaz OnScrollListener y reescriba el método onScroll. Se llamará al método onScroll. cuando la vista de lista se desliza y se realizarán juicios lógicos en este método, el código específico es el siguiente:
Primero defina una lista visible para almacenar el índice del último elemento visible en la pantalla:
p>
lista privada Defina una lista para almacenar el índice del elemento visible en la pantalla después de cada diapositiva y luego compare las dos listas en el desplazamiento para busque los diferentes elementos en las dos listas para obtener el índice del elemento recién "expuesto". El nuevo índice debe cambiar de invisible a visible. El código es el siguiente: @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // TODO Auto -stub de método generado if (rendimientoWidgetTicket! = null && mLiveShowTicketList! = null) {// Esta línea de código es el juicio nulo requerido para mi operación de datos, que puede ser reemplazado por las condiciones que necesita // Compara los números de serie de los dos elementos visibles y solo expone los nuevos ArrayList // Reemplazar el último El índice del elemento visible se agrega a la lista temporal for (int i = firstVisibleItem; i < firstVisibleItem + visibleItemCount; i++) { list.add(i); } if (visibleList != null && list != null) { //Una colección de índices de nuevos elementos visibles ArrayList if (diffList != null) { for (int x = 0 ; x < diffList.size(); x++) { // Operación de exposición // Realiza la operación correspondiente aquí LogUtils.LOGD(TAG, "diffList.get(x):" + diffList. get(x)); } //Actualiza la lista y agrega el índice del último elemento visible a la lista. visibleList.clear(); visibleList.addAll(lista); } } //Borrar la lista del índice del último elemento visible if (list != null) { list.clear(); } } } /** * @MethodName: getDiffrent * @tags: @param list1 * @tags: @param list2 * @tags: @return * @return_type: ArrayList * @exception * @TODO: Saca diferentes elementos de las dos listas y agrégalos a la nueva lista * @since */ p> privado ArrayList long st = System.nanoTime(); ArrayList< Integer> diff = new ArrayList for (índice entero: lista1) { if (!list2.contains(index)) { diff.add(index); } } devuelve diff; }