2016-07-11 43 views
7

Mi chiedevo se nuovo database Firebase ha aggiunto questa capacità perché ne ho bisogno nel mio progetto ..Come recuperare i dati dal database Firebase in ordine decrescente?

La struttura si presenta come questo ..

enter image description here

e ya impostazione RecyclerView per invertire abituato lavoro per me perché ciò causa che lo fa iniziare dal basso.

Soluzione

così, questa è la soluzione migliore che posso forse pensare of..For ora.

Come @Frank ha detto che questo potrebbe essere il duplicato, ma l'ho risolto inizialmente con il suo aiuto.

così cosa possiamo fare è rendere la timeStamp negativo cioè -20164846476589

e poi Sottraendo con un po 'più alto valore come 999999999999999L (che per il momento non abbiamo intenzione di superare offcourse) e poi quello che otteniamo sarebbe il valore più basso per discendente nuovo timestamp

ei dati sarebbe automagicamente sarà decrescente nel Firebase

cioè

String NewDescTimeStamp= String.valueOf((9999999999999L+(-1 * PreviousTimestamp))); 

mFirebaseRef.child(NewDescTimeStamp).setValue(true); 
+1

Questo è stato già trattato molte volte. Dovrai invertire i risultati lato client o aggiungere una proprietà con un valore invertito ai tuoi dati. Vedi [questa risposta] (http://stackoverflow.com/questions/34156996/firebase-data-desc-sorting-in-android/34158197#34158197) o uno qualsiasi dei [risultati in questo elenco] (http: // stackoverflow .com/search? q =% 5Bfirebase-database% 5D + decrescente) –

+0

http://stackoverflow.com/a/42572025/2149195 – RBK

risposta

13

Non è possibile farlo con l'API esistente.

È possibile utilizzare uno o più dei seguenti metodi per recuperare un numero noto di figli: limitToFirst(), limitToLast(), startAt(), EnDat()

inoltre è possibile utilizzare uno dei ordinazione metodi: orderByChild(), orderByValue(), orderByKey()

Than, memorizzarli in una struttura di dati (come ArrayList) e quindi utilizzare java.util.Collections.reverse() per invertire la lista.

Con firebase è necessario eseguire parte del lato client della query logic. Non tutte le operazioni disponibili in SQL sono disponibili su Firebase.

+4

che fa schifo .. ora devo salvare prima i dati –

+0

Yap. dovresti filtrare la maggior parte sul server, fare il resto sul client. – TomerBu

+0

questo è quello che volevo fare, grazie a proposito –