2016-07-13 13 views
0

Ich versuche, JAVA zu verwenden, um Daten aus einer Firebase-Datenbank in einem Android zu lesen. Ich habe eine Datenbank, die folgende:Abrufen von Daten aus Firebase. AddValueEventListener für komplexes Objekt

{ 
    "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" : "......" 
    } 
    } 
} 

ich einfache Strukturen lesen können, wie zum Beispiel:

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) { 

    } 
}); 

Aber ich weiß nicht, wie Daten aus einer Struktur „Zeitplan“ abzurufen. Ich habe versucht, POJO neu zu erstellen und die Struktur zu lesen, aber es funktioniert nicht.

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

warum nicht ref.child ("schedule")? Oder nehmen Sie einfach die gesamte Datenbank an erster Stelle (wenn sie nur Informationen und Zeitplan enthält) – Bill

Antwort

0

Kleine Fehler, nur dataSnapshot innerhalb der zu postSnapshot ändern für Looping und du bist gut zu gehen.

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

Wenn das Problem immer noch da ist, dann ist es Ihr POJO.

Verwandte Themen