вы можете сохранять сообщения в Firebase с отметкой времени, затем, когда вы извлекаете все данные сообщения, сравниваете их с остальными сообщениями и сортируете по дате, и они отображают вверху самые новыеили просто инвертируйте RecyclerView
, и вы увидите последние сообщения в верхней части RecyclerView
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
myRecyclerView.setLayoutManager(linearLayoutManager);
РЕДАКТИРОВАТЬ
Вы можете сравнить значениякаждого сообщения и сортируйте их по отметке времени, полученной из Firebase
public class timeStampSort implements Comparator<YourModel> {
@Override
public int compare(YourModel o1, YourModel o2) {
return Long.compare(o2.getTimestamp(), o1.getTimestamp());
}
}
, а затем перед вызовом mAdapter = new MessagesAdapter....
сделайте это
Collections.sort(yourArray, new timeStampSort());
Это должно упорядочить ваши сообщения с отметкой времени от каждогоодин без необходимости инвертировать RecyclerView
Вышеупомянутая сортировка может быть выполнена, если вы уже сделали другой orderByChild в своем запросе, и вы не можете сделать это более одного раза.
Но, как предполагает Фрэнк, гораздо эффективнее сделать это с orderByChild
, поэтому вы можете сделать это только
Query query = rootRef.child("messages").child(messageSenderId).child(messageReceiverId).orderByChild("timestamp");