Firebase Données Desc Tri dans Android
Je suis le stockage des données dans Firebase de stockage.
Objet Comment
avec l'attribut timestamp
. Lorsque que j'appuie sur les données de l'appareil avec Firebase je suis remplissage timestamp
avec currentTime et de les stocker dans long
type de données.
Quand je fais de la récupération des données avec firebaseRef.orderByChild("timestamp").limitToLast(15)
résultat n'est pas le tri de la façon dont je m'attendais.
J'ai même joué un peu avec les règles et pas de résultat:
{
"rules": {
".read": true,
".write": true,
".indexOn": "streetrate",
"streetrate": {
".indexOn": ".value"
}
}
}
J'ai essayé magasin timestamp
dans String
type de données, même problème.
- Je suggère de les trier en fonction de la valeur que vous voulez et puis la page vers l'arrière. (Tri asc, puis la page de fin moins x entrées.)
Vous devez vous connecter pour publier un commentaire.
Firebase pouvez commander les éléments dans l'ordre croissant par une propriété donnée, puis renvoie les N premiers éléments (
limitToFirst()
) ou les N derniers éléments (limitToLast()
). Il n'y a aucun moyen d'indiquer que vous voulez que les éléments dans l'ordre décroissant.Il y a deux options pour obtenir le comportement que vous voulez:
Utiliser un Firebase requête pour obtenir des données correctes, puis re-commander côté client
Ajouter un champ qui est un descendant de la valeur aux données
Pour cette dernière approche, il est courant d'avoir un inversé d'horodatage.
une bonne solution que j'ai trouver si vous utilisez recycleur vue de rendre les données...
il va inverser les données de rendu...
Je ne vois aucune option pour inverser les données. Mais Une Brute façon est d'obtenir les données.
J'ai résolu le problème en étendant FirebaseListAdapter et supérieur de la méthode getItem:
}
L' @Monet_z_Polski de l'approche fondée sur
a un effet bizarre sur les pas de mise à jour FirebaseRecyclerView automatiquement (PopulateViewHolder n'est pas déclenché en temps réel les modifications). Donc, la meilleure option est utiliser un négatif clés pour indexer les données.
De tri à côté client est simple et pas besoin de plus de ressources système.
Chaque instantané de données a previousChildkey champ. Si vous voulez desc de tri, imaginez previousChildkey est nextChildKey.
Voici mon exemple:
Tri des articles par date peut être fait en utilisant
android.support.v7.util.SortedList
android.support.v7.util.SortedList
peut également être utilisé avecRecyclerView
Si vous le faites sur le web, alors vous pouvez le pousser à valeurs dans un tableau et ensuite imprimer les valeurs stockées dans l'ordre inverse.
ajouter une colonne à savoir timestamp avec des valeurs
(-1*System.currentTimeMillis())
et lors de l'extraction de données à utiliser
orderByChild("timestamp").limitToFirst(15)
ou
orderByChild("timestamp").limitToLast(15)
selon votre condition.il est smartway pour obtenir des données de tri, comme firebase a pas de règle pour l'ordre décroissant.
Swift 3: