studio sobre programacion para herramientas desarrollo con avanzado aplicaciones android android-listview

sobre - manual de programacion android



Android: Implementando la barra de progreso y "cargando..." para la lista sin fin como Android Market (2)

Agregue un onScrollListener al ListView. Cuando el usuario se desplaza, verifique si el ListView está llegando a su final. Si es así, entonces obtenga más datos. Como ejemplo :

public abstract class LazyLoader implements AbsListView.OnScrollListener { private static final int DEFAULT_THRESHOLD = 10 ; private boolean loading = true ; private int previousTotal = 0 ; private int threshold = DEFAULT_THRESHOLD ; public LazyLoader() {} public LazyLoader(int threshold) { this.threshold = threshold; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if(loading) { if(totalItemCount > previousTotal) { // the loading has finished loading = false ; previousTotal = totalItemCount ; } } // check if the List needs more data if(!loading && ((firstVisibleItem + visibleItemCount ) >= (totalItemCount - threshold))) { loading = true ; // List needs more data. Go fetch !! loadMore(view, firstVisibleItem, visibleItemCount, totalItemCount); } } // Called when the user is nearing the end of the ListView // and the ListView is ready to add more items. public abstract void loadMore(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount); }

Actividad :

public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); ListView listView = (ListView) findViewById(R.id.listView); listView.setOnScrollListener(new LazyLoader() { @Override public void loadMore(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // Fetch your data here !!! } }); } }

Puede encontrar la implementación completa en este enlace

Inspirándose en Android Market, he implementado una lista sin fin que carga más datos del servidor cuando llegamos al final de la lista.

Ahora, necesito implementar la barra de progreso y el texto "Cargando ..." como se muestra

El código de muestra para inspirarse sería genial.


Aquí hay una solución que también hace que sea fácil mostrar una vista de carga al final del ListView mientras se carga.

Puedes ver las clases aquí:

https://github.com/CyberEagle/OpenProjects/blob/master/android-projects/widgets/src/main/java/br/com/cybereagle/androidwidgets/helper/ListViewWithLoadingIndicatorHelper.java - Ayuda para hacer posible el uso de características sin extender desde SimpleListViewWithLoadingIndicator.

https://github.com/CyberEagle/OpenProjects/blob/master/android-projects/widgets/src/main/java/br/com/cybereagle/androidwidgets/listener/EndlessScrollListener.java - Escucha que comienza a cargar datos cuando el usuario está a punto de llegar al final de ListView.

https://github.com/CyberEagle/OpenProjects/blob/master/android-projects/widgets/src/main/java/br/com/cybereagle/androidwidgets/view/SimpleListViewWithLoadingIndicator.java - The EndlessListView. Puedes usar esta clase directamente o extender desde ella.