Java 如何从firebase数据库获取已登录用户的数据

Java 如何从firebase数据库获取已登录用户的数据,java,android,firebase,firebase-realtime-database,firebase-authentication,Java,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我需要这方面的帮助 如何从firebase数据库获取登录的用户数据 这是我的密码: public void getUserInfo(){ mFirebaseDatabase = FirebaseDatabase.getInstance(); mUserDatabase = mFirebaseDatabase.getReference("users"); FirebaseUser user = mAuth.getCurrentUser(); mUserDatabas

我需要这方面的帮助

如何从firebase数据库获取登录的用户数据

这是我的密码:

public void getUserInfo(){
    mFirebaseDatabase = FirebaseDatabase.getInstance();
    mUserDatabase = mFirebaseDatabase.getReference("users");
    FirebaseUser user = mAuth.getCurrentUser();
    mUserDatabase.child(userID).addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange( com.google.firebase.database.DataSnapshot datasnapshot) {
            for (DataSnapshot dataSnapshot : datasnapshot.getChildren()) {
                User user1 = dataSnapshot.getValue(User.class);

                String firstname = user1.getFirstName();
                String secondname = user1.getSecondName();
                String email = user1.getEmail();
                String enrollment = user1.getEnrollnumber();
                String branch = user1.getBranch();
                String college = user1.getCollege();

                First_name.setText(firstname);
                Second_name.setText(secondname);
                tx_Email.setText(email);
                Enroll_number.setText(enrollment);

            }
        }
        @Override
        public void onCancelled(DatabaseError firebaseError) {
            /*
             * You may print the error message.
             **/
        }
    });

}

任何帮助都将不胜感激

据我所知,您正在将侦听器附加到单个用户的数据。这意味着您不需要在onDataChange中循环dataSnapshot.getChildren

因此:


试试这个,在我的例子中,我在firebase中的数据库称为Users,userID是每个用户的id,使用这个userID我过滤每个用户的数据,例如名称、电子邮件等等

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference idRef = rootRef.child("Users").child(userID);

final List<String> lstItems= new ArrayList<String>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
    String values = (String) ds.getValue();
    lstItems.add(values);
}

Log.d(TAG, "NAME: " + lstItems.get(0).toString());
Log.d(TAG, "EMAIL: " + lstItems.get(1).toString());
您需要编写一个for来迭代所有字段,然后获得所需的位置,例如position[0]=name,position[1]=email…等等

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference idRef = rootRef.child("Users").child(userID);

final List<String> lstItems= new ArrayList<String>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
    String values = (String) ds.getValue();
    lstItems.add(values);
}

Log.d(TAG, "NAME: " + lstItems.get(0).toString());
Log.d(TAG, "EMAIL: " + lstItems.get(1).toString());

我希望它能帮助你

我最好的猜测答案如下。如果这不是问题的原因:1将实际问题添加到问题中。现在还不清楚您共享的代码有哪些地方不起作用。2将JSON at/users/$uid作为文本添加到您的问题中,请不要截图。您可以通过单击页面中的导出JSON链接来实现这一点。
email = lstItems.get(0).toString();
name = lstItems.get(1).toString();