![](/img/trans.png)
[英]How do I get the email address of currently logged in user? (Android Studio / Java / Firebase)
[英]Android: How do I display only the data of the user who is currently logged in?
我通過 Firebase 進行了注冊。 數據是這樣存儲的:
每個用戶都可以填寫表格,表格中的數據會顯示在 RecyclerView 的單獨屏幕上。 問題是現在用戶沒有以任何方式分開。 這是用戶記錄的樣子:
如何只顯示由特定用戶創建的條目? 我需要通過用戶 ID 准確檢查。 現在我 output 這樣的數據:
protected void onCreate(Bundle savedInstanceState) {
...
dRef = FirebaseDatabase.getInstance().getReference().child("User Data");
dRef.addListenerForSingleValueEvent(valueEventListener);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
userData = new ArrayList<UserData>();
}
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot dataSnapshot1: dataSnapshot.getChildren()) {
UserData uData = dataSnapshot1.getValue(UserData.class);
userData.add(uData);
}
userAdapter = new UserAdapter(MainActivity.this, userData);
recyclerView.setAdapter(userAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {}
};
我怎樣才能做到這一點? 各地的ID都不一樣。
升級版:
創建用戶:
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
User user = new User(fullName, age, email, phone);
FirebaseDatabase.getInstance().getReference("Users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(RegisterUser.this, "Successful", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
} else {
Toast.makeText(RegisterUser.this, "Failed", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
}
});
} else {
Toast.makeText(RegisterUser.this, "Failed", Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
}
}
});
用戶:
public class User {
public String fullName, age, email, phone;
public User() {
}
public User(String fullName, String age, String email, String phone) {
this.fullName = fullName;
this.age = age;
this.email = email;
this.phone = phone;
}
}
用戶數據:
public class UserData {
String id, userName, userLastName, userOtchestvo, userAppeal, userOrganisation, userPhone, userEmail, userVK, userFB;
public UserData(String id, String userName, String userLastName, String userOtchestvo, String userAppeal, String userOrganisation, String userPhone, String userEmail, String userVK, String userFB) {
this.id = id;
this.userName = userName;
this.userLastName = userLastName;
this.userOtchestvo = userOtchestvo;
this.userAppeal = userAppeal;
this.userOrganisation = userOrganisation;
this.userPhone = userPhone;
this.userEmail = userEmail;
this.userVK = userVK;
this.userFB = userFB;
}
public UserData() {}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUserName() {
return userName;
}
...
單擊按鈕,我將數據添加到 Firebase:
add_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String userId, userName, userLastName, userOtchestvo, userAppeal, userOrganisation, userPhone, userEmail, userVK, userFB;
userId = database.push().getKey();
userName = title_input.getText().toString();
userLastName = author_input.getText().toString();
userOtchestvo = pages_input.getText().toString();
userAppeal = appeal_input.getText().toString();
userOrganisation = organisation_input.getText().toString();
userPhone = phone_input.getText().toString();
userEmail = email_input.getText().toString();
userVK = vk_input.getText().toString();
userFB = fb_input.getText().toString();
UserData userData = new UserData(userId, userName, userLastName, userOtchestvo, userAppeal, userOrganisation, userPhone, userEmail, userVK, userFB);
database.child(userId).setValue(userData);
}
});
database.push().getKey()
這不會給你用戶 ID,這只會給你一個不等於用戶 ID 的隨機唯一密鑰。
所以改為這樣做。
userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
這將為您提供當前登錄用戶的userId
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.