我说这个错误
com.google.firebase.database.DatabaseException:需要一个Map 反序列化,但是得到了一个类java.util.ArrayList
我尝试了solution1 solution2及其他版本的一些解决方案,加上几个小时的谷歌搜索,但我没有任何有效的解决方案。
所以请任何人都可以帮助我了解这个Firebase结构database structure image及其解决方案。
这是我的示例代码
类别对象类
public class Category {
private String link;
private String categoryName;
private String activeJob;
private Map<String, JobList> jobList;
....
public Map<String, JobList> getJobList() {
return jobList;
}
public void setJobList(Map<String, JobList> jobList) {
this.jobList = jobList;
}
}
工作清单对象类
public class JobList {
private String employerName;
private String jobClosingDate;
private String jobCode;
private String jobTitle;
private String jobLink;
private String status;
private String updatedDate;
在MainActivity
public void getJobListFromFirebase() {
ChildEventListener childEventListener = new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
categories = dataSnapshot.getValue(Category.class);
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
.......
答案 0 :(得分:2)
将您的category
类更改为此:
private String link;
private String categoryName;
private String activeJob;
private List<JobList> jobList;
....
public List<JobList> getJobList() {
return jobList;
}
public void setJobList(List<JobList> jobList) {
this.jobList = jobList;
}
}
从您的数据库结构中,我们可以做类似List<JobList>
或Map<Int,JobList>
(不是Map<String,JobList>
)的事情。
试试这个,让我知道。
答案 1 :(得分:0)
将jobList的映射更改为Category模型类中的joblist列表
public class Category {
private String link;
private String categoryName;
private String activeJob;
private List<JobList> jobList;
....
public List<JobList> getJobList() {
return jobList;
}
public void setJobList(List<JobList> jobList) {
this.jobList = jobList;
}
}