我正在尝试使用以下代码检索快照的值:
mDB = FirebaseDatabase.getInstance().getReference("Salarie");
mDB.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Toast.makeText(getApplication(),snapshot.getKey(),Toast.LENGTH_SHORT).show();
Salarié salarié = snapshot.getValue(Salarié.class);
Toast.makeText(getApplication(),salarié.getDepartement(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我的javaBean看起来像这样:
public class Salarié {
private String departement;
private String nom;
private String prenom;
public void setNom(String nom) {
this.nom = nom;
}
public String getNom() {
return nom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public String getPrenom() {
return prenom;
}
public void setDepartement(String département) {
this.departement = département;
}
public String getDepartement() {
return departement;
}
}
我的数据库如下所示:
"40" : {
"Departement" : "EXEMPLE",
"Nom" : "EX1",
"Prenom" : "EX2"
},
问题是在调试期间我可以看到快照有值,但是当我尝试通过变量salarié显示它时,我什么也得不到。
答案 0 :(得分:1)
问题是模型类中变量的命名 您需要更改变量名称,如下所示: -
public class Salarié {
private String Departement; //must be same as firebase response
private String Nom;
private String Prenom;
public String getDepartement() {
return Departement;
}
public void setDepartement(String departement) {
Departement = departement;
}
public String getNom() {
return Nom;
}
public void setNom(String nom) {
Nom = nom;
}
public String getPrenom() {
return Prenom;
}
public void setPrenom(String prenom) {
Prenom = prenom;
}
}
答案 1 :(得分:0)
您还可以将您的setter / getter置于Serialized Class中,因为您的Firebase采用JSON格式
对于您的Salarie class
将其更改为此,请确保您的应用程序中已启用GSON library
:
compile 'com.google.code.gson:gson:2.7'
Salarie班级:
@IgnoreExtraProperties
public class Salarie {
@SerializedName("Departement")
public String Departement;
@SerializedName("Nom")
public String Nom;
@SerializedName("PreNom")
public String PreNom;
}
<强>代码:强>
mDB = FirebaseDatabase.getInstance().getReference("Salarie");
mDB.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Toast.makeText(getApplication(),snapshot.getKey(),Toast.LENGTH_SHORT).show();
Salarie salarie = snapshot.getValue(Salarie.class);
Toast.makeText(getApplication(),salarie.Departement,Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
确定当您想要查找数据时,在查询时使用Firebase上的Query
功能。
答案 2 :(得分:0)
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
Toast.makeText(getApplication(),snapshot.getKey(),Toast.LENGTH_SHORT).show();
String department = (String)snapshot.child("Departement").getValue();
}
}
我已经向您展示了获取部门名称,就像您可以尝试获取所有值一样。