Java 将布尔数组作为字段添加到Firestore文档

Java 将布尔数组作为字段添加到Firestore文档,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,我希望向我的用户集合中的所有用户添加一个整数数组字段 我发现要做到这一点,最好使用列表而不是数组。() 在将这个integar数组添加到我已经在工作的用户注册活动中时,它可以很好地上传到数据库。但是,它随后在登录时出现问题。产生以下错误: java.lang.RuntimeException:无法反序列化对象。类java.util.List具有泛型类型参数,请改用GenericTypeIndicator(在字段“stops”中找到) 在登录活动的代码的这一部分: userRef.get().a

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

我发现要做到这一点,最好使用列表而不是数组。()

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

java.lang.RuntimeException:无法反序列化对象。类java.util.List具有泛型类型参数,请改用GenericTypeIndicator(在字段“stops”中找到)

在登录活动的代码的这一部分:

 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.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);
}
公共类用户实现包裹{
私人字符串电子邮件;
私有字符串用户标识;
私有字符串用户名;
私有字符串化身;
私人名单站;
私有类加载器;
公共用户(字符串电子邮件、字符串用户id、字符串用户名、字符串化身、列表站、类加载器){
this.email=电子邮件;
this.user\u id=user\u id;
this.username=用户名;
this.avatar=化身;
this.stops=停止;
this.classLoader=classLoader;
}
公共列表getStops(){
返回站;
}
公共无效设置窗口(列出停止){
this.stops=停止;
}
公共类加载器getClassLoader(){
返回类加载器;
}
公共void setClassLoader(类加载器类加载器){
this.classLoader=classLoader;
}
公共用户(){
}
受保护用户(包裹中){
email=in.readString();
user_id=in.readString();
username=in.readString();
avatar=in.readString();
in.readList(停止,类加载器);
}
公共静态最终创建者=新创建者(){
@凌驾
公共用户createFromParcel(中的地块){
返回新用户(在中);
}
@凌驾
公共用户[]新数组(整数大小){
返回新用户[大小];
}
};
公共字符串getAvatar(){
返回化身;
}
公共虚拟化身(字符串化身){
this.avatar=化身;
}
公共静态创建者getCREATOR(){
回归创造者;
}
公共字符串getEmail(){
回复邮件;
}
公用电子邮件(字符串电子邮件){
this.email=电子邮件;
}
公共字符串getUser_id(){
返回用户id;
}
public void setUser\u id(字符串user\u id){
this.user\u id=user\u id;
}
公共字符串getUsername(){
返回用户名;
}
public void setUsername(字符串用户名){
this.username=用户名;
}
@凌驾
公共字符串toString(){
返回“用户{”+
“电子邮件='”+电子邮件+'\''+
“,user\u id='”+user\u id+'\''+
“,username='”+username+'\''+
“,阿凡达=”+阿凡达+“\”+
“,stops='”+stops+'\''+
'}';
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地书面记录(电子邮件);
目的写入目录(用户id);
目的写入字符串(用户名);
目标写入限制(化身);
目的写入列表(停止);
}
数据库如下所示

集合>用户

文档>erEq5iWy1Fd1Jaj3wl2AeMOlXp62


字段>化身:空,电子邮件“bob@gmail.com,classLoader:null,stops:[0,0,0,0,0,0]”,用户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;
    }
}
公共类用户实现包裹{
私人字符串电子邮件;
私有字符串用户标识;
私有字符串用户名;
私有字符串化身;
私人名单站;
私有类加载器;
公共用户(字符串电子邮件、字符串用户id、字符串用户名、字符串化身、列表站、类加载器){
this.email=电子邮件;
this.user\u id=user\u id;
this.username=用户名;
this.avatar=化身;
this.stops=停止;
this.classLoader=classLoader;
}
公共列表getStops(){
返回站;
}
公共无效设置窗口(列出停止){
this.stops=停止;
}
}

当使用
列表时它工作吗?
?是的,它工作。@AlexMamo
    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;
    }
}