2017-02-08 29 views
2

在下面的POC中,我們有addChildEventListener,所有的@Override方法接受作爲第二個參數的「String s」,它是前一個孩子的關鍵字。爲什麼ChildEventListener()返回前一個孩子的密鑰?

這是否有任何具體原因?我想有一些設計模式,知道前一個孩子的關鍵是什麼讓事情變得更容易?

Query recentPostsQuery = mDatabase.child("Posts").limitToFirst(100); 

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

     } 

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

      Log.d("test", dataSnapshot.getKey()); 
      Log.d("test", dataSnapshot.child("Title").toString()); 
      Log.d("test", s); 

     } 

     @Override 
     public void onChildRemoved(DataSnapshot dataSnapshot) { 

     } 

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

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
+0

我更好奇爲什麼onChildRemoved _doesn't_提供的關鍵。 –

回答

0

爲了您的查詢的初始孩子,onChildAdded將在您所要求的孩子的順序被調用。在你的片段中,這意味着它被稱爲增量鍵。

但稍後可能會在兩個現有節點之間添加一個子節點。在這種情況下,onChildAdded會觸發,您將使用String previousKey來確定將它插入視圖的位置。

相關問題