我正在尝试将Firebase中的数据导入到Object中,但它会为值返回null。
我的Firebase数据库如下:
- Reports
- RandomID
- Name: Bob
- Value: x
等
我的报告类如下:
public class Report {
private String name;
private String value;
public Report() {
}
public Report(String name, String value) {
this.name= name;
this.value= value;
}
public String getName() {
return name;
}
public String getValue() {
return value;
}
public void setName(String name) {
this.name= name;
}
public void setValue(String value) {
this.value= value;
}
我有一个数据库addChildEventListener,在onChildAdded方法中我执行以下操作:
mDatabase = FirebaseDatabase.getInstance().getReference().child("Reports");
mDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Report currentReport = dataSnapshot.child(s).getValue(Report.class);
Log.d("CurrentReport", "Name: "currentReport.getName() + " Value: " + currentReport.getValue()));
Log.d("MyReports", dataSnapshot.getValue().toString());
currentReport.getName()
和getValue()
返回null
但dataSnapshot.getValue().toString()
正在返回:
{Name=Bob, Val= x}
如何在不执行报告x =新报告(...)
的情况下将其存储在报告中由于
答案 0 :(得分:0)
{Name=Bob, Val= x}
与您的对象不匹配。
案件很重要。
private String name;
private String value;
选项
1)更新Java对象:private String Name, Val;
2)更新Firebase,让name
和value
成为关键。
答案 1 :(得分:0)
试试这个,我将你的对象封装起来。
mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getValue() != null)
{
Report = dataSnapshot.getValue(Report.class);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
//---
}
});