2017-08-04 25 views
0

Ich habe folgende StrukturErste Kind Werte in Firebase

root 
    -class1 
    -section1 
     -student1 
      -firstname 
      -lastname 
     -student2 
      -firstname 
      -lastname 
    -section2 
     -student1 
      -firstname 
      -lastname 
     -student2 
      -firstname 
      -lastname 

Ich brauche die Abschnittsnummer (Section1, section2 ...) und für jeden Abschnitt zu erhalten, der Nachname für student2.
Das Problem, das ich gegenüberstelle, ist, dass es alles in einer Fragment-Klasse in Android ist, die ich anzeigen muss und nichts scheint zu arbeiten. Ich habe this verwiesen, um die Kinder auch zu bekommen, aber die for Schleife funktioniert irgendwie nicht und ich bekomme null Werte auf Wiederbeschaffung.

Ich brauche

section1, lastname (of student2 in section1) 
section2, lastname (of student2 in section2) 
... 
and so on until all sections are exhausted 

Antwort

0

bekommen U eine Modellklasse wie

class Class{ 
Arrylist<section> sections; 
}; 

class section{ 
Arrylist<Student> students; 
}; 

class Student{ 
String firstname, lastname; 
}; 

dann den Wert von Klassen bekommen machen können

haben andere Art und Weise, ohne viele Modellklassen zu machen, aber das ist schmerzhafter und zeitaufwendiger. Wenn Sie möchten, können Sie gerne kommentieren.

+0

ich das auch einen Blick nehmen möchten. Vielen Dank – evan

+0

erhalten Sie den Wert in der Objektklasse. HashMap data = (HashMap ) dataSnapshot.getValue(); dann brechen Sie das Objekt in Ihren wünschenswerten Wert. –

0

Bitte benutzen Sie den folgenden Code ein:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference classRef = rootRef.child("class1"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String lastname = ds.child("student2").child("lastname").getValue(String.class); 
      Log.d("TAG", lastname); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
classRef.addListenerForSingleValueEvent(eventListener);