Solution 1 :
If you want to get accurate results when querying a Firestore database, you should use either a java Date or a Firestore Timestamp object, but definitely not a String. I’m saying that, because the way String objects are ordered, is lexicographic and the result that you’ll get will not be much of a help.
To be able to add a Timestamp value, you can use the solution from my following answer:
The query that you are actually using should not be changed, it will work the way it is right now.
I am storing events (think calendar events) in Firestore and the times as Strings because timestamps in Firestore seem to be something else. Ex. 10:00 AM, 10:00 PM, etc. I want to display these events in my
RecyclerView sorted by time.
Is it possible to sort them before populating the
RecyclerView? I tried looking and found nothing online and don’t know how to approach this problem.
I am using FirebaseUI and I’m guessing this has to happen in the Adapter somewhere
Query query = firebaseFirestore.collection(year).whereIn("location", "Park").orderBy("time", Query.Direction.ASCENDING); //Recycler options FirestoreRecyclerOptions < EventModel > options = new FirestoreRecyclerOptions.Builder < EventModel > () .setQuery(query, EventModel.class) .build(); eventAdapter = new EventAdapter(options); mFirestoreList.setAdapter(eventAdapter); eventAdapter.startListening(); eventAdapter.notifyDataSetChanged();
Comment posted by Hussain
You can use