答案 0 :(得分:1)
在您的项目中,您需要一个代表“Driver”实体的POJO。类似的东西:
public class Driver {
private String age;
private String busNum;
// etc ...
private HashMap<String, Object> Latlng;
public Driver() {
}
// getters ...
public HashMap<String, Object> getLatlng() {
return Latlng;
}
}
在Firebase
中,内部对象必须声明为HashMaps<String, Object>
,其中String
是关键,Object
可以是模型中的任何其他对象(在你的情况是Float
我敢打赌。)
现在,如果你想只读一些值 ,只需调用addListenerForSingleValueEvent
方法,如下所示:
FirebaseDatabase.getInstance()
.getReferenceFromUrl(URL_DRIVERS)
.child(driverKey)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Driver driver = dataSnapshot.getValue(Driver.class);
// And here you can access Latlng object
latitude = driver.getLatlng().get("latitude");
longitude = driver.getLatlng().get("longitude");
}
@Override
public void onCancelled(DatabaseError databaseError) {
// handle error ...
}
});
注意:URL_DRIVERS将是您的根节点网址(https://your-project.firebaseio.com/)加上您的驱动程序节点位置(在您的情况下为“驱动程序”)
答案 1 :(得分:0)
如果您只是想知道如何获得这些值,那么就像这样:
String lat;
String lon;
String userId = // [get userID from firebase]
String mDatabase = // [get database ref from firebase]
mDatabase.child("Driver").child(userId).child("Latlng").addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
lat = dataSnapshot.child("latitude").getValue();
lon = dataSnapshot.child("longitude").getValue();
// ...
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "getUser:onCancelled", databaseError.toException());
// ...
}
});
答案 2 :(得分:0)
从您分享的数据的屏幕截图中我可以理解您正在推动驱动程序节点中的值,所以如果我猜对了,那么它不是您可以获得并通过的用户ID在代码中(如其他答案中所述)。
在这种情况下,您必须获取驱动程序节点
的快照1。)创建一个Drier实体的POJO,Driver.class
public class Driver {
private String age;
private String busNum;
// etc ...
private HashMap<String, Object> Latlng;
public Driver() {
}
// add all getters and setters...
public HashMap<String, Object> getLatlng() {
return Latlng;
}}
在您的活动课程中
DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Driver");
mDatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println("There are total" + dataSnapshot.getChildrenCount() + " values");
for (DataSnapshot driverSnapshot: dataSnapshot.getChildren()) {
SampleContent content= driverSnapshot.getValue(Driver.class);
System.out.println(content.getLatlng().toString());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
注意:我没有运行代码可能存在语法错误,请原谅我。
另请查看https://firebase.google.com/docs/database/android/retrieve-data了解详情。