2016-07-13 61 views
0

我試圖用Java從在Android上火力地堡數據庫中讀取數據。我有以下數據庫:從Firebase中檢索數據。 AddValueEventListener對複雜對象

{ 
    "info" : { 
    "about" : "...........", 
    "address" : "...........", 
    "bus" : "", 
    "contact" : "........", 
    "email" : ".........", 
    "mobile_phone" : ".........", 
    "trolley" : "" 
    }, 
    "schedule" : { 
    "47" : { 
     "hall" : { 
     "id" : 2, 
     "name" : "..." 
     }, 
     "presentation" : { 
     "about" : "", 
     "id" : 1, 
     "title" : "....." 
     }, 
     "section" : { 
     "id" : 2, 
     "name" : ".... " 
     }, 
     "speakers" : [ 101 ], 
     "time_end" : 0, 
     "time_start" : 1416652800, 
     "url" : "......" 
    } 
    } 
} 

我能讀懂簡單的結構,如:

ref.child("info").addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 

     Info msg =dataSnapshot.getValue(Info.class); 
     System.out.println(msg.getEmail()); 
    } 

    @Override 
    public void onCancelled(FirebaseError firebaseError) { 

    } 
}); 

但我不知道如何從結構「時間表」中檢索數據。我試圖重新創建POJO並閱讀結構,但它不起作用。

ref.child("schedule").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) { 
       Schedule msg =dataSnapshot.getValue(Schedule.class); 
       System.out.println(msg.getHall().getId()); 
      } 


     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 


    }); 
+0

爲什麼不這樣做ref.child( 「安排」)?或者只是抓住整個數據庫(如果它只包含信息和時間表) – Bill

回答

0

小錯誤,只是改變dataSnapshotpostSnapshot內的循環,你是好去。

for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
    Schedule msg = postSnapshot.getValue(Schedule.class); 
    System.out.println(msg.getHall().getId()); 
} 

如果問題仍然存在,那麼這是您的POJO。