2017-03-03 46 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) { 
//--- 
      } 
     }); 
相關問題