ListView (Adaptador) elemento de visibilidad oyente

¿Es posible tener un oyente de visibilidad en el elemento de cada lista? Como: en el usuario ve el elemento, hacer algo. En el elemento está oculto, hacer otra cosa.

Quiero comprobar cuándo un elemento "entra" o "sale" del desplazamiento para actualizar una segunda lista.

Adicionalmente mi ListView podría expandir como:

adapter.addAll( (Collection<? extends DBObject>) events); adapter.notifyDataSetChanged(); 

Creo que una forma podría ser utilizar un oyente global para comprobar los elementos, pero me temo que se desordenado si añadir más elementos a la ListView (arriba). Todavía no he logrado nada con eso

 eventList.setOnScrollListener(new OnScrollListener() { public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } @Override public void onScrollStateChanged(AbsListView view, int scrollState) {} }); 

Puede utilizar la función onScroll para calcularlo.

 eventList.setOnScrollListener(new OnScrollListener() { int oldFirstVisibleItem = 0; int oldLastVisibleItem = 0; public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if (firstVisibleItem > oldFirstVisibleItem) { for(int i = oldFirstVisibleItem; i < firstVisibleItem; i++) { onExit(i); } } if (firstVisibleItem < oldFirstVisibleItem) { for(int i = firstVisibleItem; i < oldFirstVisibleItem; i++) { onEnter(i); } } int lastVisibleItem = firstVisibleItem + visibleItemCount - 1; if (lastVisibleItem < oldLastVisibleItem) { for(int i = oldLastVisibleItem+1; i <= lastVisibleItem; i++) { onExit(i); } } if (lastVisibleItem > oldLastVisibleItem) { for(int i = oldLastVisibleItem+1; i <= lastVisibleItem; i++) { onEnter(i); } } oldFirstVisibleItem = firstVisibleItem; oldLastVisibleItem = lastVisibleItem; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) {} }); public void onEnter(int position) { // Handle an item coming into view. } public void onExit(int position) { // Handle an item going out of view. } 

La respuesta está en su pregunta.

Uno de los métodos que anula en el onScrollListener () es

 public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { } 

Los parámetros pasados ​​incluyen el firstVisibleItem y el visibleItemCount . Puede utilizar estos dos números para determinar qué elementos están actualmente visibles.

Sólo tenga en cuenta que onScroll se llama con mucha frecuencia mientras se desplaza.

  • ViewPager dentro del elemento de línea ListView
  • Cómo agregar divisores entre los elementos deshabilitados en ListView? - Lollipop
  • Cómo agregar un pie de página en ListView?
  • Using notifyItemRemoved o notifyDataSetChanged con RecyclerView en Android
  • No se actualiza la vista de lista de Android
  • Cómo hacer que la vista de lista se desplace hasta que el último elemento esté en la parte superior de la pantalla
  • Cómo limitar la visualización de los elementos de la lista en ListView por 10 y siguientes 10 después de hacer clic en el siguiente botón
  • Custom Listview scroll esconde el proceso de la barra de progreso y ImageView
  • Comprensión de Android ListView
  • Android - ¿Menú emergente cuando se pulsa la vista de elemento de lista?
  • RadioButtons programáticamente agregados se niegan a obedecer la ponderación LayoutParams
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.