Tiene que cargar inicialmente una serie de registros limitando la consulta inicial. Posteriormente se le añade una escucha al scroll de la pantalla para saber cuando se llega al final y es necesario cargar más datos. Para ello se utiliza el OnScrollListener
, aquí su documentación.
He encontrado un proyecto de CodePath en GitHub que publica un ejemplo completo de su implementación: Endless Scrolling with AdapterViews.
En el ejemplo crea una clase EndlessScrollListener
implementada sobre OnScrollListener
. Una vez añadida a tu proyecto la gestión de la actualización queda así:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// ... the usual
ListView lvItems = (ListView) findViewById(R.id.lvItems);
// Attach the listener to the AdapterView onCreate
lvItems.setOnScrollListener(new EndlessScrollListener() {
@Override
public void onLoadMore(int page, int totalItemsCount) {
// Triggered only when new data needs to be appended to the list
// Add whatever code is needed to append new items to your AdapterView
customLoadMoreDataFromApi(page);
// or customLoadMoreDataFromApi(totalItemsCount);
}
});
}
// Append more data into the adapter
public void customLoadMoreDataFromApi(int offset) {
// This method probably sends out a network request and appends new data items to your adapter.
// Use the offset value and add it as a parameter to your API request to retrieve paginated data.
// Deserialize API response and then construct new objects to append to the adapter
}
}
Échale un vistazo al enlace del proyecto porque es muy interesante.