Clasificación de descripciones de datos de Firebase en Android
Estoy almacenando datos en el almacenamiento de Firebase.
Objeto Comment
con atributo timestamp
. Cuando envío datos desde el dispositivo a Firebase, los completo timestamp
con currentTime y los almaceno en el long
tipo de datos.
Cuando recupero los datos con firebaseRef.orderByChild("timestamp").limitToLast(15)
el resultado, no los ordeno como esperaba.
Incluso jugué con las reglas y no obtuve resultados:
{
"rules": {
".read": true,
".write": true,
".indexOn": "streetrate",
"streetrate": {
".indexOn": ".value"
}
}
}
Intenté almacenar timestamp
en String
tipo de datos, el mismo problema.
Firebase puede ordenar los elementos en orden ascendente según una propiedad determinada y luego devuelve los primeros N elementos ( limitToFirst()
) o los últimos N elementos ( limitToLast()
). No hay forma de indicar que desea los elementos en orden descendente.
Hay dos opciones para obtener el comportamiento que desea:
Utilice una consulta de Firebase para obtener los datos correctos y luego vuelva a ordenarlos en el lado del cliente.
Agregar un campo que tenga un valor descendente a los datos
Para este último enfoque, es común tener una marca de tiempo invertida.
-1 * new Date().getTime();
No veo ninguna opción para revertir los datos. Pero la forma One Brute es obtener los datos.
List<ModelClass> mList=new ArrayList();
public void onDataChange(DataSnapshot dataSnapshot)
{
mList.clear();
for(DataSnapshot children: dataSnapshot.getChildren()){
ModelClass modelClass=children.getValue(ModelClass.class);
mList.add(modelClass);
}
Collections.reverse(mList);
Adapter.notifyDataSetChanged();
}