Android Firebase获取单个值作为字符串

时间:2016-12-01 11:12:12

标签: android firebase firebase-realtime-database

我有这个问题,我无法从我的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);

1 个答案:

答案 0 :(得分:2)

Firebase无法立即获取数据,显然......需要下载数据。

下载数据时会调用

onDataChange。完成return ID后,由于null尚未调用,因此ID为onDataChange。这只是逻辑。

请参阅How to return the value from inner class to outer class?