Android 在模型类中定义构造函数(使用CloudFireStore获取数据)
我在云Firestore中添加了一些数据 其中我有字符串标题、字符串描述、字符串[]照片 我想在MyClass.class中获取这些数据,所以我在类中提供了参数化构造函数和Getter&Setters 但错误表示不支持转换为数组,请改用列表 这是我的逻辑部分代码: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()
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;
}
}