从firebase数据库中获取数据

时间:2017-09-25 18:31:04

标签: java android firebase firebase-realtime-database

我想从Firebase内部获取数据,以检查此用户是否存在于数据库中,但是我无法解决这个问题,听众触发这是我的代码: -

  • 如果我删除while循环,我就无法快速获取对象
  • 如果我继续循环我进入无限循环,我不知道为什么 为什么听众不会触发

    DataSnapshot fetched ;
    public boolean user_exist(final String user) throws Exception {
    users.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            fetched = dataSnapshot ;
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
        }
    });
    while (fetched == null){
        Log.e("dbController","not fetched yet");
    }
    return fetched.hasChild(user);
    }
    

1 个答案:

答案 0 :(得分:0)

Firebase必须从数据库中获取数据并将其带入您的应用。这可能需要时间,因此应该在后台完成。添加valueEventListener时,提取在后台完成。您可以显示progressBar以显示数据仍在加载,一旦数据在手中,请执行其余代码:

users.child(user).addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if (dataSnapshot.exists()) {
            funUserExists();
        } else {
            funNoUser();
        }
    }
    @Override
    public void onCancelled(DatabaseError databaseError) {
    }
});