在我的Firebase数据库中,我将其设置为:
纬度和经度分别由0
和1
表示。我目前正在使用硬编码方法来获取纬度,经度和名称:
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();
}
});
现在我设置我的数据,如图所示:
如何在不使用硬编码的情况下轻松获取loc1和loc2的变量(0
,1
和name
)的数据值。未来,地点数量也会增加。
答案 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();
}
});