如何从Relatime Firebase数据库中仅获取更新的对象?

时间:2018-01-01 12:00:20

标签: android firebase firebase-realtime-database

我是Firebase实时数据库的新手,并且不知道如何从表格中仅获取最近更新的对象。

我尝试过使用" ChildEventListener"但是当我第一次初始化Listener时,它从数据库中获取最后一行。 如果没有更新,则不应该获取它。 我只想在更新或新添加对象时使用它。 我已经这样做了,

databaseReference.child("last_chat").orderByChild("s_id").equalTo(preference.getUserData().getId()).limitToLast(1).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Log.e("dataSnapShot", dataSnapshot.toString() + "      " + s);
        }

        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
            Log.e("dataSnapShotChagned", dataSnapshot.toString() + "      " + s);

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
            Log.e("dataSnapShotRemoved", dataSnapshot.toString());

        }

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

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e("onCalcnelle", databaseError.toString());
        }
    });

提前谢谢。

2 个答案:

答案 0 :(得分:0)

public ValueEventListener addValueEventListener (ValueEventListener listener)

另外:Google Play服务 为此位置的数据添加更改侦听器。每次数据更改时,都会使用不可变的数据快照调用侦听器。

Firebase Doc

希望这有帮助。

答案 1 :(得分:0)

我已经解决了这个问题。

我只需要将代码放在OnChildChanged中,而不是将代码放在OnChildAdded中。

首次运行应用程序时显示dataSnapShot,但只要我更改或更新对象dataSnapShotChagned就会显示。

因此它对我有用,每次初始化监听器时都会调用OnChildAdded方法,只有在特定对象发生更改时才调用OnChildChanged方法。

非常感谢你的帮助。