为什么在ChildEventListener()上返回上一个子节点的键?

时间:2017-02-08 21:45:31

标签: android firebase firebase-realtime-database

在下面的POC中,我们将addChildEventListener所有@Override方法作为第二个参数接受“String s”,这是前一个孩子的关键。

这有什么具体原因吗?我想有一些设计模式,知道前一个孩子的钥匙会让事情变得更容易吗?

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) {

        }
    });

1 个答案:

答案 0 :(得分:0)

对于查询的初始子项,将按您请求子项的顺序调用onChildAdded。在你的代码片段中,这意味着它需要增量键。

但稍后可能会在两个现有节点之间添加一个孩子。在这种情况下,onChildAdded会触发,您可以使用String previousKey来确定在视图中插入的位置。