2016-12-01 8 views
-1

Ich habe dieses Problem, dass ich nicht erhalten kann Einzelwert von meinem firebase JSON und überprüfen Sie, ob es null ist oder nicht.Android Firebase erhalten Einzelwert als Zeichenfolge

Hier ist meine JSON-Datei:

{ "117500978158564407389": 
    { 
    "uid" : "117500978158564407389", 
    "cat_list" : { 
    "category_list" : [ { 
     "cat_name" : "Work" 
    }, { 
     "cat_name" : "Health" 
    }, { 
     "cat_name" : "Food" 
    }, { 
     "cat_name" : "Spare time" 
    }, { 
     "cat_name" : "Travel" 
    } ] 
    } 
    } 
    } 

Hier ist mein Code in Presenter von MVP, wo ich versuche Wert meines "uid" in json zu bekommen. Aber es zeigt immer eine Null an.

@Override 
public String getId(String id) {  
    reference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://talisproject-89e62.firebaseio.com/userData/"); 
    reference.child("117500978158564407389").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      CategoryList categoryList = dataSnapshot.getValue(CategoryList.class); 
      ID = categoryList.getUid(); 

     } 
     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

    return ID; 
} 
} 

Hier meine POJO Klasse ist

public class CategoryList implements Serializable { 
public List<Category> categoryList; 


public List<Category> getCategoryList() { 
    return categoryList; 
} 

public void setCategoryList(List<Category> categoryList) { 
    this.categoryList = categoryList; 
} 

public CategoryList catList; 
public String uid; 

public String getUid() { 
    return uid; 
} 

public void setUid(String uid) { 
    this.uid = uid; 
} 

public CategoryList(CategoryList catList, String uid) { 

    this.catList = catList; 
    this.uid = uid; 
} 

} 

Und hier, wo ich meine Presenter-Funktion aufrufen, ist es immer eine null. Weiß jemand, warum es immer eine Null anzeigt und wie bekomme ich diesen Wert?

+4

* Hat jemand weiß, warum es immer eine Null zeigt * ... ich weiß ... Feuerbasis ist async http://ideone.com/PPHi95 ... offensichtlich 'return ID;' erscheinen, bevor der Listener 'onDataChange' trifft – Selvin

Antwort

2

Firebase erhält nicht sofort die Daten, offensichtlich ... Es muss Daten herunterladen.

onDataChange wird aufgerufen, wenn die Daten heruntergeladen werden. Wenn Sie return ID getan haben, ist die ID null, da onDataChange noch nicht aufgerufen wurde. Es ist einfach logisch.

Siehe How to return the value from inner class to outer class?

Verwandte Themen