У меня есть узел базы данных с именем posts
, выглядит так:
posts
|
|---post1
|
|---post2
|
|---post3
post 1,2,3 - push-идентификаторы.В основном это узел, который хранит записи в виде push-идентификаторов, что означает, что они автоматически добавляются сверху вниз, причем снизу - новые добавленные сообщения.
Чтобы прослушать этот узел, я подключил дочерний слушатель событий, чтобы получить всесообщения, когда я получаю сообщения, я сохраняю их в объекте списка (массив).Теперь, чтобы отслеживать размер списка, я добавил запись в журнал.например:
private void getPosts(){
DatabaseReference post_ref = FirebaseDatabase.getInstance().getReference().child("posts");
Query query = post_ref.orderByKey().limitToLast(25);
ChildEventListener listener = new ChildEventListener(){
@Override
public void onChildAdded(DataSnapshot datasnapshot , String s){
//get posts
Post post = datasnapshot.getValue(Post.class);
//add to list
post_list.add(post);
//log the size of post_list
Log.e("SIZE" , String.valueOf(post_list.size()));
}
};
query.addChildEventListener(listener);
}
После этого в журнале печатается список чисел, который начинается с 1
и заканчивается на 25
.Это означает, что дочерний прослушиватель событий вызывался 25 раз и 25 объектов были добавлены в список.
, пока здесь все не имеет смысла.
Проблема
После того как я вызвал getPosts()
метод.Я добавил новый пост в базу данных, и консоль напечатала 25
, что означает, что размер по-прежнему составляет 25. Но я только добавил новый пост, который означает, что он должен был быть добавлен в список.
Я должен получить 26
в качестве нового размера, так почему он все еще 25
?
Кроме того, когда я добавляю еще один и еще один пост размером post_list
все еще журналы 25
.Так может кто-нибудь объяснить это?