我是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());
}
});
提前谢谢。
答案 0 :(得分:0)
public ValueEventListener addValueEventListener (ValueEventListener listener)
另外:Google Play服务 为此位置的数据添加更改侦听器。每次数据更改时,都会使用不可变的数据快照调用侦听器。
希望这有帮助。
答案 1 :(得分:0)
我已经解决了这个问题。
我只需要将代码放在OnChildChanged
中,而不是将代码放在OnChildAdded
中。
首次运行应用程序时显示dataSnapShot
,但只要我更改或更新对象dataSnapShotChagned
就会显示。
因此它对我有用,每次初始化监听器时都会调用OnChildAdded
方法,只有在特定对象发生更改时才调用OnChildChanged
方法。
非常感谢你的帮助。