2017-02-08 31 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来确定将它插入视图的位置。

相关问题