2016-09-25 6 views
2

Ich versuche, Daten von Firebase abzurufen. Der Name in InfoAndroid Firebase ruft Kind des Kindes ab

Dies ist mein Firebase-Baum.

enter image description here

Ich habe dies bereits getan

Firebase ref = new Firebase("https://link.firebaseio.com/Users/xxxxxxxx/Categories/drinks/"); 

Dann habe ich meine Zuhörer erstellt

ref.addChildEventListener(new ChildEventListener() { 
       @Override 
       public void onChildAdded(DataSnapshot dataSnapshot, String s) { 
        Log.e("TOTAL ITEM " ,""+ dataSnapshot.getChildrenCount()); 

        for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) { 
         //Item_Get_List newPost = eventSnapshot.child("Info").getValue(Item_Get_List.class); 
         System.out.println("GetChildren: "+eventSnapshot.child("Info")); 
         System.out.println("details: "+eventSnapshot.child("Info").getValue()); 

        } 

Ich habe dies in der Konsole:

E/TOTAL ITEM: 2 
I/System.out: GetChildren: DataSnapshot { key = Info, value = null } 
I/System.out: details: null 
I/System.out: GetChildren: DataSnapshot { key = Info, value = null } 
I/System.out: details: null 
E/TOTAL ITEM: 2 
I/System.out: GetChildren: DataSnapshot { key = Info, value = null } 
I/System.out: details: null 
I/System.out: GetChildren: DataSnapshot { key = Info, value = null } 
I/System.out: details: null 
E/TOTAL ITEM: 1 
I/System.out: GetChildren: DataSnapshot { key = Info, value = {name=Pierre} } 
I/System.out: details: {name=Pierre} 

Aber wenn ich

Item_Get_List newPost = eventSnapshot.child("Info").getValue(Item_Get_List.class); 
System.out.println("Name: "+newPost.getName()); 

tun möchte, habe ich diesen Fehler bekam

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.app.pierre.myapp.Item_Get_List.getName()' on a null object reference 

Meine Item_Get_list Klasse ist wie folgt:

public class Item_Get_List { 
    private String name; 

    public Item_Get_List(){ 

    } 

    public Item_Get_List(String name){ 
     this.name = name; 

    } 

    public String getName(){ 
     return name; 
    } 
} 

Was habe ich falsch gemacht ??

Vielen Dank im Voraus


UPDATE fand ich eine vorübergehende Lösung von

if(eventSnapshot.child("Info").getValue() != null){ 
         System.out.println("Name: "+newPost.getName()); 
        } 

zu tun, aber das ist nur vorübergehend, weil ich weiß, dass ich etwas falsch hier mache. = (

Antwort

0

Als Ihr Datenbaum enthält Kind innerhalb Kind Sie zwei ausführen müssen, um Schleifen in tiefere Schicht zu erhalten.

// diese

for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) { //Item_Get_List newPost = eventSnapshot.child("Info").getValue(Item_Get_List.class); System.out.println("GetChildren: "+eventSnapshot.child("Info")); System.out.println("details: "+eventSnapshot.child("Info").getValue()); 
} 
ändern

// zu dies

for (DataSnapshot eventSnapshot : dataSnapshot.getChildren()) { // 
     for (DataSnapshot childEventSnapshot : eventSnapshot.getChildren()) { 
    Item_Get_List newPost = childEventSnapshot.child("name").getValue(Item_Get_List.class); 
    System.out.println("GetChildren: "+childEventSnapshot.child("name")); System.out.println("details: "+childEventSnapshot.child("name").getValue()); 
    } 
    } 

Bitte lassen Sie mich wissen, wenn Das ändert alles für dich. Hoffentlich wird dir das helfen, was du willst. Kommentiere, wenn etwas nicht stimmt.


EDIT: Ich denke, das Objekt null Fehler dieses

verursacht wird
Item_Get_List newPost = childEventSnapshot.child("name").getValue(Item_Get_List.class); 

Remove .child ("name") und machen es

Item_Get_List newPost = childEventSnapshot.getValue(Item_Get_List.class); 
+0

ich gerade versucht, , aber immer noch den gleichen Fehler und auch noch die GetChildren: DataSnapshot {Schlüssel = Name, Wert = Null} auf der Konsole. – Pierre

+0

Hey, das ist eigentlich nicht der eigentliche Fehler. Verwenden Sie dies in Java-Projekt oder Android-Projekt? Denn wenn Sie in Android verwenden, würde ich dies nicht als Fehler betrachten, es sei denn, Ihr Logcat zeigt einen Fehler an. Dies ist Ihre benutzerdefinierte Debug-Überprüfung. –

+0

Ich benutze Android, aber ich meine, ich habe noch: java.lang.NullPointerException: Versuch, die virtuelle Methode 'java.lang.String com.app.pierre.myapp.Item_Get_List.getName()' auf eine Null-Objekt-Referenz, wenn Ich füge System.out.println hinzu ("Name:" + newPost.getName()); – Pierre

Verwandte Themen