vertical studio linearlayout horizontal fillviewport android scroll-offset

studio - scrollview eclipse android



Android: ListView.getScrollY(): ¿funciona? (2)

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


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 está ocupando la vista completa, siempre obtendrá 0, porque la parte superior de la parte desplazada de la lista siempre está en la parte superior de la pantalla.

Lo que quieres hacer para ver si estás 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 } } } }); }

El motivo del primer contador anterior es que a veces los eventos de desplazamiento se pueden generar varias veces, por lo que solo necesita reaccionar la primera vez que se llega al final de la lista.

Si está intentando hacer una lista de crecimiento automático, le sugiero este tutorial .


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

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