Java Firebase实时数据库跟踪更改

Java Firebase实时数据库跟踪更改,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我试图在活动的onStart方法中跟踪数据库中的所有更改,但以下代码仅在firebase树的第一行更改时起作用: mDatabase = FirebaseDatabase.getInstance().getReference(); mDatabase.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot snapshot) {

我试图在活动的onStart方法中跟踪数据库中的所有更改,但以下代码仅在firebase树的第一行更改时起作用:

mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot snapshot) {
            for (DataSnapshot child : snapshot.getChildren()) {
                System.out.println(child.getKey() + " : " + child.getValue());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }

    });
我试图通过为每个孩子创建一个侦听器来分别跟踪每个孩子,但它也只对第一个孩子有效。我如何跟踪所有更新?多谢各位

更新。树中有jsut 3个孩子:


我需要能够看到它们中的任何一个何时被更新。

嘿,你试过使用添加了child\u的事件监听器吗

儿童活动


子事件被触发,以响应通过push()方法添加的新子节点或通过updateChildren()方法更新的子节点等操作对节点的子节点执行的特定操作。以上每一项都有助于监听对数据库中特定节点的更改。

尝试使用addChildEventListener:

getDatabase().getReference().addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

        }

        @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) {

        }
    })

如果你发布Firebase结构(你想要听的特定部分)+你是如何创建mDatabase的,那将很有帮助。还要检查@user2819864,我刚刚编写了mDatabase=FirebaseDatabase.getInstance().getReference();。我编辑了这个问题。非常感谢。