android - orderbykey - Firebase limitToLast Query
query firebase android (2)
Mi pregunta tal vez es una tontería, he leído la documentación pero no he encontrado una solución a mi pregunta. Cuando uso limitToLast para obtener los últimos 15 mensajes (digamos del 5 al 20) y si elimino el 20º mensaje, childListener me devuelve mensajes como este (5-6-7-8-9-10-11-12- 13-14-15-16-17-18-19-4) ... Como puede ver, el último elemento es el número 4. El código es así:
messagesListener = FBMessagesRef.limitToLast(15).addChildEventListener(new ChildEventListener()
, cómo puedo solucionarlo y no obtener el 4 ° elemento
Como obtiene los últimos 15 dígitos cuando establece el valor en 15, cambie el valor de limitToLast
a -1
para obtener el último valor de Firebase. Cambie su código a continuación fragmento.
messagesListener = FBMessagesRef.limitToLast(-1).addChildEventListener(new ChildEventListener(),
La documentación oficial de Firebase dice que si el valor límite es inferior al recuento de elementos en la base de datos, leerá todos los elementos en la base de datos. Está claro, supongo.
limitToLast (limit) devuelve firebase.database.Query
Genera un nuevo objeto Query limitado al último número específico de hijos.
El método limitToLast () se usa para establecer un número máximo de niños para ser sincronizados para una devolución de llamada dada. Si establecemos un límite de 100, inicialmente solo recibiremos hasta 100 eventos child_added. Si tenemos menos de 100 mensajes almacenados en nuestra base de datos, un evento child_added se activará para cada mensaje. Sin embargo, si tenemos más de 100 mensajes, solo recibiremos un evento child_added para los últimos 100 mensajes pedidos. A medida que los elementos cambien, recibiremos eventos eliminados por niños para cada elemento que se elimine de la lista activa, de modo que el número total permanezca en 100.