如何从具有特定String android的Firebase接收数据

时间:2017-02-02 12:53:22

标签: android sorting firebase firebase-realtime-database

我的数据结构如下:

=format(Fields!YourActualDateValueInsteadOfAFormattedString.Value, "d. MMMM yyyy")

我想只打印/检索包含例如Area“67D”的数据,在此我要打印数据2和3中的所有数据。

如果我的问题不明确,请告诉我。

我试过了

Database
 Data1 { 
   Family: "Adam, John, Smith, Bob, Alice"
   Age: "12, 23, 6, 5, 8"
   Area: "GT6, GT9, GT12"
}

 Data2 { 
   Family: "Tom, Ben, Berry, Hosh, Nico"
   Age: "68, 43, 26, 15, 18"
   Area: "67D, HG6, DHJD, 453"
}
 Data3 { 
   Family: "Alice, Karan, faser, jenny, kietty"
   Age: "14, 10, 15, 17, 5"
   Area: "HG6, 67D, DHJD"
}

2 个答案:

答案 0 :(得分:1)

根据加藤的this SO answerthis Firebase blog post,无法通过子字符串匹配进行过滤。

考虑让孩子将区域作为键,然后您的查询将起作用:

ref.orderByChild("Area").equalTo("67D");

答案 1 :(得分:0)

您可以通过检查每个区域是否包含所需的字符串来迭代所有数据并找到匹配的区域。 考虑ref是您的数据库参考:

ref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
    DataSnapshot area = dataSnapshot.child("Area");
    String area_value = area.getValue().toString();
    if(area_value.contains("67D")){
        System.out.println(dataSnapshot.toString());
    }
}