Android 在模型类中定义构造函数(使用CloudFireStore获取数据)

Android 在模型类中定义构造函数(使用CloudFireStore获取数据),android,firebase,constructor,google-cloud-firestore,Android,Firebase,Constructor,Google Cloud Firestore,我在云Firestore中添加了一些数据 其中我有字符串标题、字符串描述、字符串[]照片 我想在MyClass.class中获取这些数据,所以我在类中提供了参数化构造函数和Getter&Setters 但错误表示不支持转换为数组,请改用列表 这是我的逻辑部分代码: FirebaseFirestore db = FirebaseFirestore.getInstance(); db.collection("gallery") .get()

我在云Firestore中添加了一些数据

其中我有字符串标题、字符串描述、字符串[]照片

我想在MyClass.class中获取这些数据,所以我在类中提供了参数化构造函数Getter&Setters

但错误表示不支持转换为数组,请改用列表

这是我的逻辑部分代码:

FirebaseFirestore db = FirebaseFirestore.getInstance();

        db.collection("gallery")
                .get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                            for (QueryDocumentSnapshot document : task.getResult()) {
                                Log.d("MyTag", document.getId() + " => " + document.getData());
                                MyClass obj = document.toObject(MyClass.class);
                            }
                        } else {
                            Log.d("Main", "Error getting documents: ", task.getException());
                        }
                    }
                });
我在MyClass obj=document.toObject(MyClass.class)处得到这个错误 :


请帮助我解决此问题:(

您看到的错误消息如下:

无法反序列化对象。类com.developtrainMaintenance.FireBaseCycle.MyClass未定义无参数构造函数。如果您使用的是ProGuard,请确保未剥离这些构造函数

所有JavaBean类型的对象都应该有一个无参数构造函数,这样就可以创建它们的新实例,而无需猜测如何在构造函数中传递参数。因此,向类中添加一个无参数构造函数:

public MyClass() {}

您看到的错误消息如下:

无法反序列化对象。类com.developtrainMaintenance.FireBaseCycle.MyClass未定义无参数构造函数。如果您使用的是ProGuard,请确保未剥离这些构造函数

所有JavaBean类型的对象都应该有一个无参数构造函数,这样就可以创建它们的新实例,而无需猜测如何在构造函数中传递参数。因此,向类中添加一个无参数构造函数:

public MyClass() {}

由于您在类中提供了参数化构造函数,因此中的默认无参数构造函数不再可用。请定义无参数构造函数,它应该可以工作

public MyClass() {
    // set variables initial default value if any or leave empty
}

由于您在类中提供了参数化构造函数,因此中的默认无参数构造函数不再可用。请定义无参数构造函数,它应该可以工作

public MyClass() {
    // set variables initial default value if any or leave empty
}
公共类MyClass{
字符串标题;
字符串描述;
ArrayList照片;
公共MyClass(){}
公共MyClass(字符串标题、字符串描述、数组列表照片){
this.title=标题;
this.desc=desc;
this.photos=照片;
}
公共字符串getTitle(){
返回标题;
}
公共无效集合标题(字符串标题){
this.title=标题;
}
公共字符串getDesc(){
返回描述;
}
公共void setDesc(字符串desc){
this.desc=desc;
}
公共阵列列表getPhotos(){
归还照片;
}
公共照片(ArrayList照片){
this.photos=照片;
}
}
Firebase或FireStore不支持使用列表或映射类而不是数组的数组

公共类MyClass{
字符串标题;
字符串描述;
ArrayList照片;
公共MyClass(){}
公共MyClass(字符串标题、字符串描述、数组列表照片){
this.title=标题;
this.desc=desc;
this.photos=照片;
}
公共字符串getTitle(){
返回标题;
}
公共无效集合标题(字符串标题){
this.title=标题;
}
公共字符串getDesc(){
返回描述;
}
公共void setDesc(字符串desc){
this.desc=desc;
}
公共阵列列表getPhotos(){
归还照片;
}
公共照片(ArrayList照片){
this.photos=照片;
}
}

Firebase或FireStore不支持使用列表或映射类而不是数组的数组,请检查更新的代码。错误说明不支持数组,请使用列表。您能帮助解决此问题吗?我使用了列表照片,现在可以使用了。谢谢您的帮助,谢谢您的回复。请检查更新的代码。呃ror表示不支持阵列,请使用列表。您能帮助解决此问题吗?我使用了列表照片,现在可以使用了。感谢您的帮助,而不是您的回复。请检查更新的代码。错误表示不支持阵列,请使用列表。您能帮助解决此问题吗?我使用了列表照片,现在可以使用。谢谢您的帮助感谢您的回复。请检查更新的代码。错误说明不支持阵列,请使用列表。您能帮助解决此问题吗?我使用了列表照片;此功能现在正在运行。感谢您的帮助
public class MyClass {

    String title;
    String desc;
    ArrayList<String> photos;

    public MyClass(){}

    public MyClass(String title, String desc, ArrayList<String> photos) {
        this.title = title;
        this.desc = desc;
        this.photos = photos;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    public ArrayList<String> getPhotos() {
        return photos;
    }

    public void setPhotos(ArrayList<String> photos) {
        this.photos = photos;
    }
}