2017-03-03 43 views
0

我试图从Firebase获取数据到一个对象中,但它的值为空。Firebase getValue(Class.class)对象

我的火力地堡数据库如下:

- 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()正在返回空 但dataSnapshot.getValue().toString()将返回: {Name=Bob, Val= x}

我怎么能这样存储在报告没有做报告X =新的报告(...)

感谢

+0

你可以显示你的ChildEventListener吗?我想你可能需要删除孩子 – Linxy

+0

如果你向我们展示你的报告类,这也会有所帮助。 –

回答

0

{Name=Bob, Val= x}不符合你的对象。

案件事宜。

private String name; 
private String value; 

选项

1)更新Java对象:private String Name, Val;

2)更新火力地堡具有namevalue是密钥。

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) { 
//--- 
      } 
     }); 
相关问题