如何从Firebase检索数据以在TextView中显示? [英] How to retrieve data from Firebase to show in TextView?
本文介绍了如何从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屋!
查看全文