[英]How to get User data Via User Model from firebase?
我非常努力; 但是,我無法通過我的應用程序的Profile Fragment中的用戶 Model 獲取用戶數據。 這是我在項目中編寫的代碼。
ProfileFragment.java
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user = dataSnapshot.getValue(User.class);
assert user != null;
username.setText(user.getUserName());
useremail.setText(user.getUserEmail());
userphone.setText(user.getUserPhone());
userdesc.setText(user.getUserDesc());
if(user.getImageURL().equals("default")){
profile_image.setImageResource(R.drawable.round_logo);
}else {
Picasso.with(getContext())
.load(user.getImageURL())
.placeholder(R.drawable.round_logo)
.into(profile_image);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
用戶.java
package com.psb.farmersmarket.Model;
public class User {
private String UserName;
private String UserPhone;
private String UserDesc;
private String UserEmail;
private String UserID;
private String imageURL;
public User(String userName,String userPhone,String userDesc,String userEmail, String userID, String imageURL) {
this.UserName = userName;
this.UserPhone = userPhone;
this.UserDesc = userDesc;
this.UserEmail = userEmail;
this.UserID = userID;
this.imageURL = imageURL;
}
public User() {
}
public String getUserName() {
return UserName;
}
public void setUserName(String userName) {
UserName = userName;
}
public String getUserPhone() {
return UserPhone;
}
public void setUserPhone(String userPhone) {
UserPhone = userPhone;
}
public String getUserDesc() {
return UserDesc;
}
public void setUserDesc(String userDesc) {
UserDesc = userDesc;
}
public String getUserEmail() {
return UserEmail;
}
public void setUserEmail(String userEmail) {
UserEmail = userEmail;
}
public String getUserID() {
return UserID;
}
public void setUserID(String userID) {
UserID = userID;
}
public String getImageURL() {
return imageURL;
}
public void setImageURL(String imageURL) {
this.imageURL = imageURL;
}
}
見上代碼。 我在用戶 model 中編寫了所有 getter 和 setter 方法。 即使錯誤表明用戶沒有設置方法。 錯誤也在下面給出。
錯誤信息
W/ClassMapper: No setter/field for search found on class com.psb.farmersmarket.Model.User
W/ClassMapper: No setter/field for Description found on class com.psb.farmersmarket.Model.User
No setter/field for name found on class com.psb.farmersmarket.Model.User
No setter/field for user id found on class com.psb.farmersmarket.Model.User
No setter/field for email found on class com.psb.farmersmarket.Model.User
W/ClassMapper: No setter/field for Phone No found on class com.psb.farmersmarket.Model.User
No setter/field for status found on class com.psb.farmersmarket.Model.User
W/Settings: Setting airplane_mode_on has moved from android.provider.Settings.System to android.provider.Settings.Global, returning read-only value.
數據庫
請幫我。 提前致謝。
從錯誤消息中,您的 JSON 看起來像這樣:
"userid": {
"search": "value",
"name": "value",
"user id": "value",
"email": "value",
"Phone No": "value",
"status": "value",
"airplane_mode": "value"
}
這個 JSON 和你的代碼之間有兩個問題:
User
class 中具有字段/屬性,Firebase 對此發出警告。User
class 中有一個字段/屬性,但名稱不匹配。您可以通過使用 Java 代碼中的注釋來修復這兩個問題:
@IgnoreExtraProperties
public class User {
private String UserName;
private String UserPhone;
private String UserDesc;
private String UserEmail;
private String UserID;
private String imageURL;
public User(String userName,String userPhone,String userDesc,String userEmail, String userID, String imageURL) {
this.UserName = userName;
this.UserPhone = userPhone;
this.UserDesc = userDesc;
this.UserEmail = userEmail;
this.UserID = userID;
this.imageURL = imageURL;
}
public User() {
}
@PropertyName("name")
public String getUserName() {
return UserName;
}
@PropertyName("name")
public void setUserName(String userName) {
UserName = userName;
}
@PropertyName("Phone No")
public String getUserPhone() {
return UserPhone;
}
@PropertyName("Phone No")
public void setUserPhone(String userPhone) {
UserPhone = userPhone;
}
@Exclude
public String getUserDesc() {
return UserDesc;
}
@Exclude
public void setUserDesc(String userDesc) {
UserDesc = userDesc;
}
@PropertyName("email")
public String getUserEmail() {
return UserEmail;
}
@PropertyName("email")
public void setUserEmail(String userEmail) {
UserEmail = userEmail;
}
@PropertyName("user id")
public String getUserID() {
return UserID;
}
@PropertyName("user id")
public void setUserID(String userID) {
UserID = userID;
}
@Exclude
public String getImageURL() {
return imageURL;
}
@Exclude
public void setImageURL(String imageURL) {
this.imageURL = imageURL;
}
}
你會看到我們在這里有三個注釋:
User
@IgnoreExtraProperties
上的 @IgnoreExtraProperties 告訴 Firebase 忽略它在數據庫中找到的在User
class 中沒有匹配字段的屬性。@PropertyName(...)
告訴 Firebase 哪個 JSON 屬性從/寫入該值。@Exclude()
告訴 Firebase 記下將此值從User
class 寫入數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.