Как отсортировать группы по последним сообщениям в firebase? - PullRequest
0 голосов
/ 24 апреля 2020

Цель : показать список групп на основе последнего сообщения, а при появлении нового сообщения обновить список групп чата.

Структура Firebase:

firebase_structure_user_and_groups

Слева одна структура представляет модель пользователя : в основном под ключом студента есть список ученика, затем его данные вместе с идентификаторами групп, в которых он / она участвовал.

Правая структура представляет собой модель детализации группы : Под ключом chat_group, есть список групп с деталями, а также временем последних сообщений.

Пробное решение:

Извлечение идентификатора группы из студента, используя метод onChildAdded базы данных Firebase, один за другим, затем извлечение сведений о группе с помощью метода addListenerForSingleValueEvent, затем сохранение в списке и каждый раз сортируйте его, используя метод сортировки списка массивов, а затем вызывайте метод notifyDataSetChanged адаптера recyclerview.

Проблема с этим подходом : Слишком много времени и по мере увеличения числа групп время обработки также увеличивается.

1 Ответ

0 голосов
/ 24 апреля 2020

Я думаю, что лучшее решение - это добавить новый ключ в модель сведений о группе для зарегистрированных студентов, вот так

SignedStudents : "student1 , student2 , student3" 

Затем вы будете читать данные из chat_group напрямую orderedByChild("recent_message_timeStamp"), затем вам нужно отфильтровать его локально, чтобы группы, связанные только с указанным c студентом, добавили его в ваш список следующим образом

String students = model.getStudents();
if (students.contains("student1")) addGroupToYourList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...