Вставка нового документа Firestore в начале ArrayList с использованием SnapshotListener изменяет порядок запроса наCreate - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь использовать Firestore для запроса и обновления списка сообщений чата, который будет показывать фиксированное число (5 для этого примера) самых последних запрашиваемых сообщений внизу, убывая вверх по отметке времени, и сообщения, добавленные послезапрос в том же порядке, что и в обычном приложении чата:

  • queriedmessage1 <-oldester queried </li>
  • queriedmessage2
  • queriedmessage3
  • queriedmessage4
  • queriedmessage5 <-newest запрашивается </li>
  • newmessage1 <-добавлено после запроса </li>

Это требует от меня сортировки запроса по убыванию и использования setReverseLayout в LayoutManager из RecyclerView.Затем мне необходимо добавить новые сообщения в начало ArrayList, чтобы они отображались внизу, поскольку позиция [0] теперь находится внизу экрана.Вот мой код для этого:

Query query = mCollection.orderBy("timestamp",Query.Direction.DESCENDING).limit(5);



 query.addSnapshotListener(new EventListener<QuerySnapshot>() {
        @Override
        public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
            for (DocumentChange documentChange : queryDocumentSnapshots.getDocumentChanges()) {
                switch (documentChange.getType()) {
                    case ADDED:
                        Message message = documentChange.getDocument().toObject(Message.class);


                        mMessages.add(0,message);
                        mAdapter.notifyDataSetChanged();

                }
            }
        }

Тем не менее, изменение messages.add(message) на messages.add(0,message) изменяет порядок отображения сообщений при создании, оставляя мне что-то вроде этого:

  • queriedmessage5 <-новое новое запрос </li>
  • queriedmessage4
  • queriedmessage3
  • queriedmessage2
  • queriedmessage1 <-стрейший запрос </li>
  • newmessuser after query

Как сделать различие между сообщениями, добавленными onCreate, и сообщениями, добавленными после, для создания желаемого эффекта?

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