Сортировка после получения данных из Firestore, но перед заполнением recyclerview - PullRequest
0 голосов
/ 13 июля 2020

Проблема:

Я храню события (думаю, события календаря) в Firestore, а время как строки, потому что временные метки в Firestore кажутся чем-то другим. Ex. 10:00, 22:00 и т. Д. c. Я хочу отображать эти события в моем RecyclerView, отсортированном по времени.

Можно ли отсортировать их перед заполнением RecyclerView? Я попытался поискать и ничего не нашел в Интернете и не знаю, как решить эту проблему.

Я использую FirebaseUI, и я предполагаю, что это должно произойти где-то в адаптере

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();

1 Ответ

1 голос
/ 13 июля 2020

Если вы хотите получить точные результаты при запросе базы данных Firestore, вы должны использовать объект java Date или Firestore Timestamp , но определенно не Строка. Я говорю об этом, потому что объект String упорядочен так: lexicographi c, и результат, который вы получите, не сильно поможет.

Чтобы иметь возможность чтобы добавить значение Timestamp, вы можете использовать решение из моего следующего ответа:

ServerTimestamp всегда имеет значение null в Firebase Firestore

Запрос, который вы действительно используете, не следует менять, он будет работать так, как сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...