Firebase onchildadded () возвращает те же данные 3 раза в просмотре списка - PullRequest
0 голосов
/ 03 декабря 2018

Моя проблема та же с заголовком, firebase onchildadded () возвращает одни и те же данные 3 раза в listview.Я пробовал много вещей, но все еще не смог найти решение.

Мой код есть;

public void ReceiveMessages(){
     childEventListener = message_dbref.child(user_id).child(user2_id).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Message message = dataSnapshot.getValue(Message.class);

            message_dbref.removeEventListener(childEventListener);
            user_dbref.removeEventListener(valueEventListener);
            messageArrayList.add(message);
            messageAdapter.notifyDataSetChanged();

        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

1 Ответ

0 голосов
/ 03 декабря 2018

Таким образом, вы не должны использовать childEventListener, потому что он срабатывает всякий раз, когда изменяется любой дочерний узел родительского узла.

Вы можете проверить, обновляете ли вы другие дочерние узлы родительского узла, на котором ваш childEventListener устанавливается вместе с другими.Это должно быть так, чтобы он срабатывал 3 раза.

Так что вам лучше сосредоточиться на использовании singleValueEventListener или valueEventListener на той же ссылке, которую вы используете сейчас.

Узнайте больше о childEventListeners здесь.

Узнайте больше о чтении и записи в Firebase здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...