Averigüe si el receptor de eventos hijo en firebase carga completamente todos los datos

Estoy utilizando firebase para almacenar y recuperar datos para mi aplicación android, en mi actividad estoy recuperando todos los datos (ejemplo: lista de datos de usuario) de firebase usando childEventListener.

Mi problema es:

Quiero mostrar una barra de progreso siempre y cuando los datos no se recuperen completamente desde firebase usando childEventListener. ¿Cómo comprobar si todos los datos se recuperan por completo? Porque quiero cerrar la barra de progreso después de que los datos sean recuperados por completo.

Cualquier respuesta sería apreciada, gracias!

Hay una manera común de detectar cuando se realiza Firebase sincronizando los datos iniciales en una ubicación determinada. Este enfoque hace uso de una de las garantías de evento Firebase :

Los eventos de valor siempre se activan por último y se garantiza que contienen actualizaciones de cualquier otro evento que ocurrió antes de que se tomara la instantánea.

Así que si tiene un ValueEventListener y un ChildEventListener en una ubicación determinada, el ValueEventListener.onDataChange() se garantiza que se llamará después de todas las llamadas onChildAdded() han sucedido. Puede utilizar esto para saber cuándo se realiza la carga inicial de datos:

 ref.addListenerForSingleValueEvent(new ValueEventListener() { public void onDataChange(DataSnapshot dataSnapshot) { System.out.println("We're done loading the initial "+dataSnapshot.getChildrenCount()+" items"); } public void onCancelled(FirebaseError firebaseError) { } }); ref.addChildEventListener(new ChildEventListener() { public void onChildAdded(DataSnapshot dataSnapshot, String previousKey) { System.out.println("Add "+dataSnapshot.getKey()+" to UI after "+previousKey); } public void onChildChanged(DataSnapshot dataSnapshot, String s) { } public void onChildRemoved(DataSnapshot dataSnapshot) { } public void onChildMoved(DataSnapshot dataSnapshot, String s) { } public void onCancelled(FirebaseError firebaseError) { } }); 

En mi ejecución de prueba esto resulta en:

 Add -K2WLjgH0es40OGWp6Ln to UI after null Add -K2YyDkM4lUotI12OnOs to UI after -K2WLjgH0es40OGWp6Ln Add -K2YyG4ScQMuRDoFogA9 to UI after -K2YyDkM4lUotI12OnOs ... Add -K4BPqs_cdj5SwARoluP to UI after -K4A0zkyITWOrxI9-2On Add -K4BaozoJDUsDP_X2sUu to UI after -K4BPqs_cdj5SwARoluP Add -K4uCQDYR0k05Xqyj6jI to UI after -K4BaozoJDUsDP_X2sUu We're done loading the initial 121 items 

Así que podría usar el evento onDataChanged() para ocultar la barra de progreso.

Pero una cosa a tener en cuenta: Firebase no sólo carga datos. Sincroniza continuamente los datos del servidor a todos los clientes conectados. Como tal, no hay realmente ningún momento en que los datos se recuperan completamente .

Lo he hecho de una manera bastante simple. Dejé un int contar y luego cada vez que llegó dentro de la función. I incremet y comprobar que el clima es igual al total no de childs. Entonces si es igual entonces allí usted puede parar la barra de progreso

  int count = 0; ref.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { count++; if(count >= dataSnapshot.getChildrenCount()){ //stop progress bar here } } 
  • Forma correcta de llamar a super.onStop () al anular el registro de un oyente
  • Haga clic en un elemento ListView cambia el estado de los elementos dentro del elemento?
  • En Android, ¿Se puede interceptar eventos clave a nivel mundial antes de que lleguen al niño?
  • ¿Hay un evento directo para bloqueo de bloqueo de teclado?
  • ¿Cuál es la alternativa al sensor de orientación de Android?
  • Android equivalente a NSNotificationCenter
  • Aceptar eventos de clic en RelativeLayout
  • SDK de Android: ¿Cómo salir del estado de la oficina para eventos de Calendario?
  • Configuración de TextView visible desde otro hilo o BeginInvoke en Android
  • Cómo obtener llamadas perdidas y recuento de SMS
  • Implementación de eventos similares a C # en Android / Java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.