Я пытаюсь создать приложение чата с помощью Firestore.Мой класс сообщений имеет метку времени в виде объекта Date
.Я хотел бы, чтобы активность чата загружала последние X-сообщения и добавляла новые в конец в реальном времени, используя SnapshotListener
.Ниже приведено то, что у меня есть, которое сортирует самые старые сообщения X по отметке времени, но игнорирует все сообщения после и не отображает новые сообщения, когда они добавляются, если полные сообщения X уже удалены.
final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(linearLayoutManager);
Query query = mCollection.orderBy("timestamp",Query.Direction.ASCENDING).limit(mCurrentPage * TOTAL_ITEMS_TO_LOAD);
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(message);
mAdapter.notifyDataSetChanged();
}
}
}
});
Редактировать: я удалил лишний код.Сортировка по убыванию приводит к тому, что сообщения при отправке запроса выводятся таким образом, при этом самые новые запрашиваемые сообщения появляются вверху, что не работает, потому что я хочу, чтобы самые новые сообщения внизу нисходили вверх: