Firebase Firestore вновь добавленные сообщения в обратном порядке - PullRequest
0 голосов
/ 05 сентября 2018

Я использую Firebase Firetore в своем приложении для Android-чата и упорядочиваю сообщения по метке времени, которая добавляется следующим образом при отправке нового сообщения:

Map<String, Object> messageMap = new HashMap<>();
...
 messageMap.put("timestamp", FieldValue.serverTimestamp());

Вот мой код для отображения всех сообщений в чате.

Query firstQuery = FirSingleton.getInstance().mMessages.document(channelFoudId).collection("all_messages")
                .orderBy("timestamp", Query.Direction.DESCENDING).limit(limit);


        registration = firstQuery.addSnapshotListener(ChatActivity.this, new EventListener<QuerySnapshot>() {
            @Override
            public void onEvent(QuerySnapshot documentSnapshots, FirebaseFirestoreException e) {

                if (e != null) {


                    Log.i(TAG, "onEvent error: " + e.getMessage());
                    progressbar.setVisibility(View.GONE);
                    isLoading = false;
                } else {


                    if (firstTimeLoading) {

                        lastVisible = documentSnapshots.getDocuments().get(documentSnapshots.size() - 1);

                    }

                    for (DocumentChange documentChange : documentSnapshots.getDocumentChanges()) {

                        if (documentChange.getType() == DocumentChange.Type.ADDED) {

                            Log.i(TAG, "onEvent: new added");
                            if (documentChange.getDocument().exists()) {


                                MessageObject messageObject = documentChange.getDocument().toObject(MessageObject.class);

                                if (firstTimeLoading) {
                                    //arrayList.add(messageObject);
                                    arrayList.add(0, messageObject);
                                } else {

                                    arrayList.add(messageObject);
                                    adapter.notifyDataSetChanged();

                                }

                            }
                        }else {

                            Log.i(TAG, "onEvent: no recently added");
                        }
                    }


                    if (firstTimeLoading){
                        recyclerView.getAdapter().notifyDataSetChanged();
                        progressbar.setVisibility(View.GONE);
                        firstTimeLoading = false;
                        isLoading = false;

                    }

                }
            }
        });

Проблема состоит в том, что когда пользователь входит в чат и появляются новые сообщения, сообщения отображаются в обратном порядке, но при обновлении данных (верните активность в чате) все сообщения располагаются в правильном порядке. Мой вопрос, как исправить это поведение.

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