2016-07-13 19 views
0

AndroidのFirebaseデータベースからデータを読み込むためにJAVAを使用しようとしています。私のようなシンプルな構造、読むことができます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( "schedule")を実行しないのですか?または、最初の場所でデータベース全体を取得するだけです(情報とスケジュールのみが含まれている場合) – Bill

答えて

0

小さな誤差、ちょうどループのために内部でpostSnapshotdataSnapshotを変更し、あなたが行ってもいいです。

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

問題がまだ残っている場合は、あなたのPOJOです。

関連する問題