我正在尝试从Firebase中的/User/树中检索我的用户详细信息。我有以下用户对象:
public class User {
private String name;
private String email;
private FirebaseUser firebaseUser;
private String lastOnline;
private LatLng latLng;
private ArrayList<SwapLocation> locations;
public User(){ }
public String getName(){
if(firebaseUser.getDisplayName() != null && !firebaseUser.getDisplayName().equals(""))
return firebaseUser.getDisplayName();
if(name != null && !name.equals(""))
return name;
return "";
}
public void setName(String name){
this.name = name;
}
public String getEmail(){
if(firebaseUser.getEmail() != null && firebaseUser.getEmail().equals(""))
return firebaseUser.getEmail();
if(email != null && email.equals(""))
return email;
return "";
}
public void setEmail(String email){
this.email = email;
}
public void setFirebaseUser(FirebaseUser firebaseUser){
this.firebaseUser = firebaseUser;
}
public FirebaseUser getFirebaseUser(){
return firebaseUser;
}
public void setLastOnline(String lastOnline){
this.lastOnline = lastOnline;
}
public String getLastOnline(){
if(lastOnline != null)
return lastOnline;
return "";
}
public void setLatLong(LatLng latlng){
this.latLng = latlng;
}
public LatLng getLatLong(){
return this.latLng;
}
public ArrayList<SwapLocation> getLocations(){
return locations;
}
public void setLocations(ArrayList<SwapLocation> locations){
this.locations = locations;
}
}
我正在尝试从Firebase检索此对象。尽管在序列化到我的User对象时遇到问题,但已在dataSnapshot中检索了该对象。
这就是我从Firebase检索对象的方式:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child(users_group).child(user.getUid());
ref.addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User this_user = dataSnapshot.getValue(User.class);
}
@Override
public void onCancelled(DatabaseError databaseError) { }
});
但是,当尝试执行“用户this_user = dataSnapshot.getValue(User.class)”时,出现错误消息“用户缺少无参数的构造函数”
任何帮助将是巨大的,谢谢
最佳答案
我已经在firef实时数据库的 kotlin 中遇到了这个问题,并通过this solution解决了这个问题
对于Kotlin,如果您将以下数据类用于Firebase,
data class UserModel(
var UserName: String,
var UserType: Int
)
那么你会得到一个类似的错误
因此,为此,您需要初始化其值。
data class UserModel(
var UserName: String = "",
var UserType: Int = 0
)