如何知道Firebase列表是否无效?

时间:2015-12-14 16:50:52

标签: java android firebase firebase-realtime-database

我在doc之后使用ChildEventListener。在数据加载期间,我只是在列表视图中显示可绘制的进度

  • 如果列表不为空,则隐藏/取消进度视图。
  • 如果列表无效,我会显示" no item"

    // Get a reference to our posts
    Firebase ref = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/fireblog/posts");
    
    ref.addChildEventListener(new ChildEventListener() {
        // Retrieve new posts as they are added to the database
        @Override
        public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
            BlogPost newPost = snapshot.getValue(BlogPost.class);
            System.out.println("Author: " + newPost.getAuthor());
            System.out.println("Title: " + newPost.getTitle());
        }
    
        //... ChildEventListener also defines onChildChanged, onChildRemoved,
        //    onChildMoved and onCanceled, covered in later sections.
    });
    

使用ref.addValueEventListener我们可以检查datasnapshot为空是否知道它。

怎么知道列表无效?可能吗 ?没有先查看addValueEventListener

1 个答案:

答案 0 :(得分:2)

您只能通过附加ValueEventListener来了解列表中没有项目。

ref.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        if (!snapshot.hasChildren()) {
            System.out.println("List is empty");
        }
    }
    @Override
    public void onCancelled(FirebaseError error) {
    }
}

但请记住,通常如果您拨打addChildEventListener(),您最终会将这些项目存储在某个内部存储空间中,例如List。您也可以简单地检查内部存储空是否为空(触发onChildRemoved()后)并在那里打印消息。