Android: ListView.getScrollY () – ¿funciona?

Lo estoy usando, pero siempre devuelve 0, aunque me he desplazado hasta el final de la lista.

getScrollY () es en realidad un método en View, no ListView. Se refiere a la cantidad de desplazamiento de toda la vista, por lo que casi siempre será 0.

Si desea saber en qué medida se desplazan los contenidos de ListView, puede usar listView.getFirstVisiblePosition ();

Funciona, devuelve la parte superior de la parte desplazada de la vista en píxeles desde la parte superior de la vista visible. Consulte la documentación de getScrollY () . Básicamente, si su lista ocupa la vista completa, siempre obtendrá 0, porque la parte superior de la lista desplazada siempre está en la parte superior de la pantalla.

Lo que desea hacer para ver si se encuentra al final de una lista es algo como esto:

public void onCreate(final Bundle bundle) { super.onCreate(bundle); setContentView(R.layout.main); // The list defined as field elswhere this.view = (ListView) findViewById(R.id.searchResults); this.view.setOnScrollListener(new OnScrollListener() { private int priorFirst = -1; @Override public void onScroll(final AbsListView view, final int first, final int visible, final int total) { // detect if last item is visible if (visible < total && (first + visible == total)) { // see if we have more results if (first != priorFirst) { priorFirst = first; //Do stuff here, last item is displayed, end of list reached } } } }); } 

La razón del contador prior prior es que a veces los eventos de desplazamiento se pueden generar varias veces, por lo que solo debe reactjsr la primera vez que se llega al final de la lista.

Si intenta hacer una lista de crecimiento automático, sugeriría este tutorial .