如何从Firebase检索数据以在TextView中显示? [英] How to retrieve data from Firebase to show in TextView?

查看:46
本文介绍了如何从Firebase检索数据以在TextView中显示?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的firebase数据库结构如下:

My firebase database structure looks like this:

我正在使用此代码,但是它没有从数据库中检索任何数据,有时 getUid()会产生NullPointerException.谁能帮我解决这个问题?

I'm using this code but it doesn't retrieving any data from database and sometime the getUid() produce NullPointerException. Can anyone help me to solve this problem?

mAuth = FirebaseAuth.getInstance();

mUser = mAuth.getCurrentUser();

userID = mUser.getUid();

mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users");

mDatabaseReference.addValueEventListener(new ValueEventListener() {

    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        showData(dataSnapshot);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

private void showData(DataSnapshot dataSnapshot) {
    for (DataSnapshot ds: dataSnapshot.getChildren()) {
        UserInformation uInfo = new UserInformation();
        uInfo.setFullName(ds.child(userID).getValue(UserInformation.class).getFullName());
        uInfo.setUsername(ds.child(userID).getValue(UserInformation.class).getUsername());
        uInfo.setEmail(ds.child(userID).getValue(UserInformation.class).getEmail());
        
        fullNameProfile.setText(uInfo.getFullName());
        usernameProfile.setText(uInfo.getUsername());
        emailProfile.setText(uInfo.getEmail());
    }
}

推荐答案

要简单地从数据库中获取用户数据,请使用以下代码行:

To simply get user data from the database please use the following lines of code:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String email = dataSnapshot.child("Email").getValue(String.class);
        String fullName = dataSnapshot.child("FullName").getValue(String.class);
        String password = dataSnapshot.child("Password").getValue(String.class);
        String userName = dataSnapshot.child("Username").getValue(String.class);
        Log.d(TAG, userName);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

或更简单的使用 UserInformation 类:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        UserInformation uInfo = dataSnapshot.getValue(UserInformation.class);
        Log.d(TAG, uInfo.getUsername());
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

这篇关于如何从Firebase检索数据以在TextView中显示?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆