Firebase obtiene el último id – limitToLast no funciona – android

Estoy tratando de obtener el último id de mi nodo de mensajes, pero no está consiguiendo el último. Por ejemplo, mi último identificador es 12, pero siempre devuelve el id del ítem 10. Mi código es así:

final Query query = firebase.orderByChild("messageId").limitToLast(1); query.addListenerForSingleValueEvent(new ValueEventListener() { public void onDataChange(DataSnapshot dataSnapshot) { Log.i("MessagesFrag","snapshot: "+dataSnapshot.getValue()+""); } public void onCancelled(FirebaseError firebaseError) {} }); 

Devuelve algo como esto:

 {10={chatId=6, time=Wed Apr 13 22:20:43 EDT 2016, message=hi, user=123, messageId=10}} 

Debe devolver:

 {12={chatId=6, time=Wed Apr 13 22:29:02 EDT 2016, message=I am fine, user=1234, messageId=12}} 

Mis datos son algo como esto:

 messages 9: chatId: "6" message: "hi" messageId: "9" time: "Wed Apr 13 22:29:02 EDT 2016" user: "123" 10: chatId: "6" message: "hello" messageId: "10" time: "Wed Apr 13 22:29:02 EDT 2016" user: "1234" 11: chatId: "6" message: "how are you?" messageId: "11" time: "Wed Apr 13 22:29:02 EDT 2016" user: "123" 12: chatId: "6" message: "I am fine" messageId: "12" time: "Wed Apr 13 22:29:02 EDT 2016" user: "1234" 

Además de eso, cuando cambio "LimitToLast" a "LimitToFirst" (que debería obtener el primero), no obtiene el primer elemento que tengo (nodo 1), obtiene el nodo 10 también.

¿Alguien sabe cuál puede ser el problema?

Creo que el problema es orderByChild , ya que los mensajes se ordenan de forma numérica, no hay necesidad de ordenarlos de nuevo. prueba esto :

  FirebaseDatabase database = FirebaseDatabase.getInstance(); // change this to your databae ref final DatabaseReference messages = database .getReference("XXXX") .child("XXXX"); // change this to your databae ref messages .limitToLast(1).addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { if (dataSnapshot.exists()) { // access last message DataSnapshot messageSnapShot= dataSnapshot.getChildren().iterator().next(); } } @Override public void onCancelled(DatabaseError databaseError) { } }); 
  • Firebase ServerValue.TIMESTAMP en objetos de modelos de datos de Java
  • ¿Cómo lidiar con el modo fuera de línea Firebase y el empuje de datos?
  • Dagger 2 problem @ Injecting FirebaseMessagingService
  • Java.lang.IllegalStateException: FirebaseApp con nombre
  • ¿Cómo leer datos de Firebase ONCE usando java / android?
  • Firebase Synchronous XMLHttpRequest en el subproceso principal está obsoleto
  • FirebaseApp con nombre no existe
  • Android Studio 2.3 no funciona con la ejecución instantánea: Debug apk bloqueo con la excepción ClassNotFoundException para la actualización de Android 2.3
  • Migración de gcm a fcm en android
  • ¿Está GCM (ahora FCM) libre para cualquier límite?
  • No puedo añadir firebase a la aplicación de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.