У меня есть эта "чат-система", которую я сделал с базой данных Firebase.
Чтобы получить сообщения в комнате, я делаю Query
с orderByChild(timestamp)
, затем меняю порядок в обратном порядке, чтобы я мог получить «новейшую» последнюю (потому что я начинаю читать снизу).
messageList = new ArrayList<>();
final Query query = chatRef_1.orderByChild("
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
messageList.add(dataSnapshot.getValue(ChatMessage.class));
updateRecyclerView();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
messageList.remove(dataSnapshot.getValue(ChatMessage.class));
updateRecyclerView();
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Но тогда я получаю этот результат
- Это происходит только с
ChildEventListener
- Метка времени выполняется сервером
- У кого-нибудь есть идея, что это может быть?
UPDATE
Вот структура базы данных
- Ящик »» Объект (Сообщение)
- Зеленый »» MessageID
- Синий »» RoomID