检索具有特定名称的所有字段

时间:2019-06-29 20:52:26

标签: java android firebase firebase-realtime-database

如何检索所有键下的所有纬度和经度? see here 我试过了,但是没有工作:

                            myRef.addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                    String text = dataSnapshot.child(key).child("latitude").getValue(String.class);
                                    System.out.println(text);

                                }

                                @Override
                                public void onCancelled(@NonNull DatabaseError databaseError) {

                                }
                            });

我要打印:

40.7486720036497

-73.9856280013919

等...

2 个答案:

答案 0 :(得分:0)

使用循环从这样的火力基地获取纬度和经度的列表-

myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override 
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
      for(DataSnapshot datas: dataSnapshot.getChildren()){
         String keys=datas.getKey(); 
         String latitudes=datas.child("latitude").getValue().toString();
         String location=datas.child("location").getValue().toString();
         String longitude=datas.child("longitude").getValue().toString();
      } 
    }
 });

希望有帮助!

答案 1 :(得分:0)

为什么不使用模型类方法? 创建自己的自定义类

public class ModelClass {
    private String latitude;
    private String longitude;

    public String getLatitude() {
        return latitude;
    }

    public void setLatitude(String latitude) {
        this.latitude = latitude;
    }

    public String getLongitude() {
        return longitude;
    }

    public void setLongitude(String longitude) {
        this.longitude = longitude;
    }

    public ModelClass(String latitude, String longitude) {
        this.latitude = latitude;
        this.longitude = longitude;
    }
}

然后在插入数据时,像这样插入。

ModelClass mc=new ModelClass("1.23","3.25");//You pass dynamic value here using variable
String key=mref.push().getKey();
myRef.child(key).setValue(mc);

然后读取这样的值。

List<ModelClass> list=new ArrayList<>();
  myRef.addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                    for(DataSnapShot ds:dataSnapShot){
                                  ModelClass mc=ds.getValue(ModelClass.class);
                                  list.add(mc);
                                  }
                                }

                                @Override
                                public void onCancelled(@NonNull DatabaseError databaseError) {

                                }
                            });

然后,您可以使用数据列表。 有关更多参考,see the docs here