So sortieren Sie Firebase-Datensätze nach zwei Feldern (Android) [duplicate]

Lesezeit: 2 Minuten

So sortieren Sie Firebase Datensatze nach zwei Feldern Android duplicate
Mangel an Wissen

Ich benutze FirebaseRecyclerAdapter und passieren FirebaseRecyclerOptions mit einer Abfrage in den Konstruktor. Jedes Element hat eine Reihe von Feldern, einschließlich Zeitstempel a und ein weiteres ganzzahliges Feld b. Also möchte ich Artikel mit älteren a aber weniger b ganz oben auf der Liste stehen. Es ist einfach mit sqlite zu implementieren, aber nicht so einfach mit nosql. Es scheint, dass ich ein zusätzliches Feld hinzufügen muss, das beide Felder enthält:
String.valueOf(a) + String.valueOf(b) aber wie erreicht man asc / desc-Eigenschaften?

Das Laden der gesamten Liste und das Sortieren in Java ist keine Option.

  • Sie scheinen bereits herausgefunden zu haben, wie Sie in der Echtzeitdatenbank nach mehreren Eigenschaften filtern können. Es gibt keine Option, die Datenbank die Ergebnisse umkehren zu lassen, aber Sie können: 1) sie clientseitig umkehren, das heißt immer eine Option, vorausgesetzt, Sie laden bereits alle Daten über eine Netzwerkverbindung, 2) speichern Sie einen invertierten Wert in einer Eigenschaft in der Datenbank und bestellen Sie darauf. Siehe diese Antwort und mehr aus dieser Liste.

    – Frank van Puffelen

    1. Mai 2020 um 14:18 Uhr

  • Das Problem ist, dass ich eigentlich alle Artikel ohne Gleichheit anfordere, aber mit Bestellung. Wenn ich in diesem Fall nur zwei Felder verkette, kann ich ASC/DESC nicht verwenden, wie ich in meiner Frage erwähnt habe

    – Mangel an Wissen

    19. Januar 2018 um 15:15 Uhr

  • Apropos Firebase Realtime-Datenbank, ja, Sie können die neue übergeben a_b Property-to-Order-Methode wie folgt: .orderBy("a_b").

    – Alex Mamo

    19. Januar 2018 um 15:21 Uhr

  • Ich habe darüber nachgedacht – aber in der Praxis wird es nicht funktionieren, da Firebase, wie ich vermute, intern einen Standard-String-Komparator verwendet, sodass die Reihenfolge von drei Schlüsseln folgt "1516428687_1", "1516428687_12", "1516428687_2". Aber ich brauche "1516428687_1", "1516428687_2", "1516428687_12". Hast du noch mehr Ideen @alex-mamo?

    – Mangel an Wissen

    20. Januar 2018 um 6:16 Uhr


  • Bei Ihrer Bestellung ist dies die normale Bestellmethode. Eine schnelle Lösung wäre, zwei Nullen vor jedem zweiten Element wie folgt hinzuzufügen: "1516428687_001"` “1516428687_002”, “1516428687_012″`. Jetzt wird Ihre Bestellung in Ordnung sein. Weitere Erklärungen finden Sie in meiner Antwort von hier. Ist es jetzt ok?

    – Alex Mamo

    20. Januar 2018 um 9:46 Uhr

  • Ja, das funktioniert, ich habe diesen Ansatz implementiert, aber dieser Workaround ist alles andere als eine einfache Lösung. Im Moment scheint Firebase einen großen Mangel an API zu haben. Können Sie Ihre Antwort bearbeiten oder einfach einen Verweis auf diese andere Antwort hinzufügen, und ich akzeptiere sie?

    – Mangel an Wissen

    21. Januar 2018 um 7:06 Uhr

917200cookie-checkSo sortieren Sie Firebase-Datensätze nach zwei Feldern (Android) [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy