聽取兒童更新

以一個用例為例,如聊天應用程式或協作購物清單應用程式(基本上需要跨使用者同步的物件列表)。如果你使用 firebase 資料庫並將值事件偵聽器新增到聊天父節點或購物清單父節點,則每次新增聊天節點時,你將從頭開始(我的意思是開始聊天)結束整個聊天結構(即任何人都說你好。我們不想這樣做,我們感興趣的只是新節點或僅刪除或修改的舊節點,不應返回未更改的節點。

在這種情況下,我們可以使用 ChildEvenListener 。沒有任何進一步的說明,這裡是程式碼示例(請參閱示例 JSON 資料的上一節):

userDBRef.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) {
        //If not dealing with ordered data forget about this
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
    });

方法名稱是自解釋的。正如你所看到的那樣,無論何時新增新使用者或修改現有使用者的某些屬性或刪除或刪除使用者,都會使用相關資料呼叫子事件偵聽器的適當回撥方法。因此,如果你為說聊天應用程式保持 UI 重新整理,請將 onChildAdded() 中的 JSON 解析為 POJO 並將其放入你的 UI 中。只需記住在使用者離開螢幕時刪除你的監聽器。

onChildChanged() 為整個子值提供已更改的屬性(新屬性)。

onChiledRemoved() 返回已刪除的子節點。