Firebase获取数据时Candidat类offres属性的类型定义问题
Firebase中Candidat类offres属性的类型设置方案

你当前已经能通过 Candidat candidat = snapshot.child(mail).getValue(Candidat.class); 正常获取Candidat类的其他属性:
private String password; private String nom; private String prenom; private String dateNaissance; private String sexe; private String nationalite; private boolean affichageInfo;
针对offres属性,按照数据库结构来设置类型即可:
定义Offre实体类
对应数据库中offres子节点的字段,创建Offre类(必须包含无参构造函数,Firebase序列化要求):public class Offre { private String titre; private String description; // 按需添加数据库中offres的其他属性,比如date、entreprise等 public Offre() {} // 所有属性的Getter和Setter方法 public String getTitre() { return titre; } public void setTitre(String titre) { this.titre = titre; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } }在Candidat类中添加offres属性
数据库里offres是“唯一ID-职位对象”的键值对结构,所以属性类型设为Map<String, Offre>:// 保留原有属性 private String password; private String nom; private String prenom; private String dateNaissance; private String sexe; private String nationalite; private boolean affichageInfo; // 新增offres属性 private Map<String, Offre> offres; // Candidat类必须有无参构造函数 public Candidat() {} // offres的Getter和Setter方法 public Map<String, Offre> getOffres() { return offres; } public void setOffres(Map<String, Offre> offres) { this.offres = offres; }
修改完成后,原有的对象构建代码就能正常获取offres数据,遍历Map即可访问每个职位信息。如果offres是纯数组结构,也可以用List<Offre>类型,但Firebase Realtime Database更推荐用Map存储带唯一标识的集合,避免数组索引混乱问题。
内容的提问来源于stack exchange,提问作者Samuel Carva
相关产品推荐
相关产品推荐

