2016-12-01 7 views
-1

私はfirebase jsonから単一の値を取得できず、nullであるかどうかをチェックすることができません。ここでAndroidのFirebaseが文字列として単一の値を取得する

は私のJSONファイルである:ここで

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

は、私は、JSONの私の「UID」の値を取得しようとMVPの発表で私のコードです。しかし、それは常にヌルを示します。ここで

@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; 
} 
} 

は、私のPOJOクラスは、私は私のプレゼンター関数を呼び出す

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; 
} 

} 

そしてここで、それは常にヌルを示しています。誰もが知っている、なぜそれが常にnullを表示し、どのように私はこの価値を得ることができますか?

ID = interPresenter.getId(uid); 
+4

*は誰もが知っているん参照してください* ...私は知っている... firebaseは非同期http://ideone.com/PPHi95 ...明らか 'IDを返すあり;'リスナーが 'onDataChange'にヒットする前に表示されます – Selvin

答えて

2

Firebaseはすぐにデータを取得しません。データをダウンロードする必要があります。

onDataChangeは、データをダウンロードするときに呼び出されます。 return IDを実行したとき、onDataChangeがまだ呼び出されていないので、IDはnullです。それは単に論理です。

が、それは常にnullを示し、なぜHow to return the value from inner class to outer class?

関連する問題