我有这个问题,我无法从我的firebase json中获取单个值,并检查它是否为null。
这是我的json文件:
{ "117500978158564407389":
{
"uid" : "117500978158564407389",
"cat_list" : {
"category_list" : [ {
"cat_name" : "Work"
}, {
"cat_name" : "Health"
}, {
"cat_name" : "Food"
}, {
"cat_name" : "Spare time"
}, {
"cat_name" : "Travel"
} ]
}
}
}
这是我在MVP的Presenter中的代码,我试图在json中获取我的“uid”的值。但它总是显示为空。
@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;
}
}
在这里我调用我的Presenter函数,它总是显示 null 。有谁知道,为什么它总是显示一个null,我怎么能得到这个值?
ID = interPresenter.getId(uid);
答案 0 :(得分:2)
Firebase无法立即获取数据,显然......需要下载数据。
下载数据时会调用 onDataChange
。完成return ID
后,由于null
尚未调用,因此ID为onDataChange
。这只是逻辑。