gpt4 book ai didi

java - 将 boolean 数组作为字段添加到 Firestore 文档

转载 作者:行者123 更新时间:2023-12-02 10:14:27 26 4
gpt4 key购买 nike

我希望向我的用户集合中的所有用户添加一个整数数组字段。

我发现这样做最好使用列表而不是数组。 (Writing array in Firebase android)。

将此整数数组添加到我已经工作的用户注册 Activity 中后,它可以很好地上传到数据库。但是随后登录时出现问题。产生以下错误:

java.lang.RuntimeException: Could not deserialize object. Class java.util.List has generic type parameters, please use GenericTypeIndicator instead (found in field 'stops')

登录 Activity 中的这部分代码:

 userRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if(task.isSuccessful()){
Log.d(TAG, "onComplete: successfully set the user client." + task.getResult());
User user = task.getResult().toObject(User.class);
((UserClient)(getApplicationContext())).setUser(user);
}
}
});

具体而言:

    User user = task.getResult().toObject(User.class);

这是我的 User.java:

 public class User implements Parcelable{

private String email;
private String user_id;
private String username;
private String avatar;
private List stops;
private ClassLoader classLoader;


public User(String email, String user_id, String username, String avatar, List stops, ClassLoader classLoader) {
this.email = email;
this.user_id = user_id;
this.username = username;
this.avatar = avatar;
this.stops = stops;
this.classLoader = classLoader;
}

public List getStops() {
return stops;
}

public void setStops(List stops) {
this.stops = stops;
}

public ClassLoader getClassLoader() {
return classLoader;
}

public void setClassLoader(ClassLoader classLoader) {
this.classLoader = classLoader;
}

public User() {

}

protected User(Parcel in) {
email = in.readString();
user_id = in.readString();
username = in.readString();
avatar = in.readString();
in.readList(stops, classLoader);

}

public static final Creator<User> CREATOR = new Creator<User>() {
@Override
public User createFromParcel(Parcel in) {
return new User(in);
}

@Override
public User[] newArray(int size) {
return new User[size];
}
};

public String getAvatar() {
return avatar;
}

public void setAvatar(String avatar) {
this.avatar = avatar;
}

public static Creator<User> getCREATOR() {
return CREATOR;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getUser_id() {
return user_id;
}

public void setUser_id(String user_id) {
this.user_id = user_id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}





@Override
public String toString() {
return "User{" +
"email='" + email + '\'' +
", user_id='" + user_id + '\'' +
", username='" + username + '\'' +
", avatar='" + avatar + '\'' +
", stops='" + stops + '\'' +
'}';
}

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(email);
dest.writeString(user_id);
dest.writeString(username);
dest.writeString(avatar);
dest.writeList(stops);
}

数据库如下所示

集合 > 用户

文档 > erEq5iWy1Fd1Jaj3wl2AeMOlXp62

字段> 头像:null,电子邮件“bob@gmail.com,classLoader:null,stops:[0,0,0,0,0,0]”,user_id:“erEq5iWy1Fd1Jaj3wl2AeMOlXp62”,用户名:“bob”

最佳答案

您需要为列表提供通用类型。

List<Integer> stops;

您的模型类示例

    public class User implements Parcelable{

private String email;
private String user_id;
private String username;
private String avatar;
private List<Integer> stops;
private ClassLoader classLoader;


public User(String email, String user_id, String username, String avatar, List<Integer> stops, ClassLoader classLoader) {
this.email = email;
this.user_id = user_id;
this.username = username;
this.avatar = avatar;
this.stops = stops;
this.classLoader = classLoader;
}


public List<Integer> getStops() {
return stops;
}

public void setStops(List<Integer> stops) {
this.stops = stops;
}
}

关于java - 将 boolean 数组作为字段添加到 Firestore 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54777414/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com