获取Firebase

时间:2016-10-11 06:41:19

标签: android firebase firebase-realtime-database data-retrieval

在我的Firebase数据库中,我将其设置为:

Current Firebase data

纬度和经度分别由01表示。我目前正在使用硬编码方法来获取纬度,经度和名称:

Firebase locationRef = mRootRef.child("loc");
        locationRef.addValueEventListener(new com.firebase.client.ValueEventListener() {
            @Override
            public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {

                Double latitude = dataSnapshot.child("0").getValue(Double.class);
                Double longitude = dataSnapshot.child("1").getValue(Double.class);
                String name = dataSnapshot.child("name").getValue(String.class);}
            @Override
            public void onCancelled(FirebaseError firebaseError) {
                throw firebaseError.toException();

            }
        });

现在我设置我的数据,如图所示:

New Firebase data set

如何在不使用硬编码的情况下轻松获取loc1和loc2的变量(01name)的数据值。未来,地点数量也会增加。

1 个答案:

答案 0 :(得分:0)

我认为你需要类似下面的内容

需要添加getChildren()foreach它会在loc下给你所有的位置 你也可以在其他数组中获取该信息

Firebase locationRef = mRootRef.child("loc");
locationRef.addValueEventListener(new com.firebase.client.ValueEventListener() {
    @Override
    public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {


        for (DataSnapshot snapm: dataSnapshot.getChildren()) {

            Double latitude = snapm.child("0").getValue(Double.class);
            Double longitude = snapm.child("1").getValue(Double.class);
            String name = snapm.child("name").getValue(String.class);}
        }
    @Override
    public void onCancelled(FirebaseError firebaseError) {
        throw firebaseError.toException();

    }
});