Red de conocimiento del abogados - Ley de patentes - Cómo obtener el número de elementos visibles en ListView

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:

lista privada visibleList = new ArrayList

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 list = new ArrayList(visibleItemCount);

// 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 diffList = getDiffrent(list, visibleList);

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 último índice de elementos visibles 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

*/

privado ArrayList getDiffrent(List lista1, Lista lista2) {

long st = System.nanoTime();

ArrayList< Integer> diff = new ArrayList();

for (índice entero: lista1) {

if (!list2.contains(index)) {

diff.add(index);

}

}

devuelve diff;

}