mAuth = FirebaseAuth.getInstance();
mFirebaseDatabase = FirebaseDatabase.getInstance();
myRef = mFirebaseDatabase.getReference().child("Users");
FirebaseUser user = mAuth.getCurrentUser();
userID = user.getUid();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
toastMessage("Successfully signed out.");
}
// ...
}
};
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
showData(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
/*private void showData(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
UserInformation uInfo = new UserInformation();
uInfo.setName(ds.child(userID).getValue(UserInformation.class).getName()); //set the name
uInfo.setHandicap(ds.child(userID).getValue(UserInformation.class).getHandicap()); //set the name
uInfo.setAge(ds.child(userID).getValue(UserInformation.class).getAge()); //set the email
uInfo.setGender(ds.child(userID).getValue(UserInformation.class).getGender()); //set the phone_num
//display all the information
Log.d(TAG, "showData: name: " + uInfo.getName());
Log.d(TAG, "showData: age: " + uInfo.getAge());
Log.d(TAG, "showData: handicap: " + uInfo.getHandicap());
Log.d(TAG, "showData: gender: " + uInfo.getGender());
ArrayList<String> array = new ArrayList<>();
array.add("Full Name:");
array.add(uInfo.getName());
array.add("Age:");
array.add(uInfo.getAge());
array.add("Handicap:");
array.add(uInfo.getHandicap());
array.add("Gender:");
array.add(uInfo.getGender());
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,array);
mListView.setAdapter(adapter);
}
}
*/
private void showData(DataSnapshot dataSnapshot) {
ArrayList<String> array = new ArrayList<>();
for(DataSnapshot ds : dataSnapshot.getChildren()){
UserInformation uInfo = ds.getValue(UserInformation.class);
array.add(" Full Name / " +uInfo.getName());
array.add(" Age / " + uInfo.getAge());
array.add(" Handicap/ " + uInfo.getHandicap());
array.add(" Gender/ " + uInfo.getGender());
}
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,array);
mListView.setAdapter(adapter);
}
@Override
public void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@Override
public void onStop() {
super.onStop();
if (mAuthListener != null) {
mAuth.removeAuthStateListener(mAuthListener);
}
}
}
}
目前,区分每个用户的方式是通过登录时分配给他们的 UID。登录时,他们使用存储在 Firebase 身份验证部分中的用户名和密码。当用户通过验证后,他们将被定向到他们的帐户页面。然后,在“帐户”页面上,我要求用户输入其个人详细信息,该详细信息保存在“表用户”下的实时数据库中。如何显示当前登录的用户信息?目前它显示用户表的详细信息,但我只希望它显示登录用户的详细信息。输出显示在 ListView 中
首先获取当前登录用户的uid:
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userid = user.getUid();
然后检索当前用户的数据:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
ref.child(userid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("name").getValue().toString();
name1.setText(name);
}
假设你有这个:
Users
userid
name: peter
//etc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)