Я пытаюсь подключить базу данных Firebase в режиме реального времени в качестве базы данных к чатам моего приложения. Я знаю, что могу ограничить записи, к которым у меня есть доступ, последними 10 записями, вызвав функцию limitToLast(10)
для моей ссылки на Firebase.
Проблема, с которой я столкнулся сейчас, заключается в том, что когда я делаю это, она ограничивает эту ссылку, чтобы всегда отображать последние 10 записей, даже если я добавлю больше записей из своего приложения. Тем не менее, я бы хотел, чтобы он учитывался при добавлении новых записей в мое приложение. Так, например, если я добавлю еще 2 записи, мой список чатов будет отображать 12 записей и т. Д.
Вот мой код с добавленным limitToLast(10)
.
DatabaseReference tRef = database.getReference(getString(R.string.firebase_channel));
tRef.limitToLast(10).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Chat c = dataSnapshot.getValue(Chat.class);
chatAdapter.newChat(c, dataSnapshot.getKey());
Log.d(TAG, "onChildAdded\t" + c.asChat());
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Chat c = dataSnapshot.getValue(Chat.class);
chatAdapter.modifyChat(c, dataSnapshot.getKey());
Log.d(TAG, "onChildChanged\t" + c.asChat());
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
Chat c = chatAdapter.removeChat(dataSnapshot.getKey());
Log.d(TAG, "onChildRemoved\t" + c.asChat());
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
Chat c = dataSnapshot.getValue(Chat.class);
chatAdapter.moveChat(c, dataSnapshot.getKey());
Log.d(TAG, "onChildMoved\t" + c.asChat());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, "onCancelled\t" + databaseError.toException());
Toast.makeText(context, "error loading chat list", Toast.LENGTH_SHORT).show();
}
});
Мне пришло в голову разделить списки чатов на один, который я показываю в своем приложении, и один, с которым я связан с Firebase, поэтому, когда в мое приложение будет добавлена новая запись, я добавлю это в оба списка. Но я действительно не думаю, что использование этой дополнительной памяти является решением этой проблемы. Есть ли способ решить эту проблему иначе?