从节点Firebase-Android中检索所有子项

时间:2016-08-04 19:57:00

标签: java android database firebase

我是Firebase的新手 我有以下数据库

    -Root
         -IT
            -KOKlB####nryPhkTaA
                    -name: value
                    -location: value
                    -website: value
            -KOKlBBPh###nryPhkTaA
                    -name: value
                    -location: value
                    -website: value
         -Media
            -KOKlBBP##nryPhkTaA
                    -name: value
                    -location: value
                    -website: value
            -KOKlBBPhm##yPhkTaA
                     -name: value
                    -location: value
                    -website: value

我的想法是想要将每个节点的子节点检索到listView 例如:我有一个列表视图,每行包含每个公司的名称,位置和网站。

这是我推送到数据库的方式

       public class Company {

private String name;
private String location;
private String website;

public Company(){}

public Company(String name,String location, String website)
{
    this.name=name;
    this.location=location;       
    this.website=website;     
}

     public Map<String, Object> toMap()
{
    HashMap<String, Object> result= new HashMap<>();
    result.put("name",name);
    result.put("location",location);
    result.put("website",website);

    return result;
}

     public void addNewCompany(String category,String name,String location, String website)
{
    Company company= new Company(name,location,city,website);
    String key= mRootRef.child("0").child(category).push().getKey();
    Map<String, Object> companyValues=company.toMap();

    Map<String, Object> childUpdates=new HashMap<>();
    childUpdates.put("0/"+category+"/" + key,companyValues);

    mRootRef.updateChildren(childUpdates);

}

我是如何尝试检索

         DatabaseReference mConditionRef=mRootRef.child(category);
        mConditionRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                for (DataSnapshot dsp : dataSnapshot.getChildren()) {
                CoLists.add(String.valueOf(dsp.getValue()));

                for(String data:CoLists){
                    mCompanies.add(data);
}

但是这个检索列表包含类别根目录中的整个数据。我希望它是公司对象的列表。

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用DataSnapshot的.getKey或.getValue()函数来获取所需的数据。