我的Firebase数据库中有一个对象列表,每个对象的键是一个时间戳。我可以使用limitToLast(1)
获取最后一个,我得到的数据快照是:
{ key = time_stamps, value = {1510768441759={id=f454445c6e880df31e, coordinates={latitude=-4.1461734, longitude=20.5992437}}} }
1510768441759
是时间戳。
如何阅读坐标?我试图将值转换为POJO,但我不能,因为时间戳对我来说是未知的,而在POJO中它将是属性的名称......
感谢。
答案 0 :(得分:3)
如果你在没有父POJO但只使用坐标pojo的情况下这样做,你可以通过数据快照执行以下操作:
Query query = ref.child("time_stamps").orderByKey();
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot item: dataSnapshot.getChildren()){
if (!dataSnapshot.hasChildren()) {
return;
}
for(DataSnapshot childSnapShot :item.getChildren()){
final String timestamp = childSnapShot.getKey();
final DataSnapshot parentSnapShot = childSnapShot.child(timestamp);
if (!parentSnapShot.hasChildren()) {
continue;
}
Double latitude = parentSnapShot.child("latitude").getValue(Double.class);
Double longitude = parentSnapShot.child("longitude").getValue(Double.class);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
等
答案 1 :(得分:0)
你有:
time_stamp
1510768441759
id: f454445c6e880df31e
coordinates
latitude=-4.1461734
longitude=20.5992437
试试这个,假设你没有1510768441759
:
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("time_stamp");
Query query = reference.orderByChild("id").equalTo(f454445c6e880df31e );
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot datas: dataSnapshot.getChildren()){
String keys=datas.getKey();
for(DataSnaphot ds :datas.getChildren()){
String latitudes=ds.child("latitude").getValue().toString();
String longitudes=ds.child("longitudes").getValue().toString();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
如果您正在使用此datasnasphot time_stamp
,则完成上述操作。首先,您执行查询以获取此id: f454445c6e880df31e
的坐标。然后,由于你在这个datasnasphot time_stamp
上,你必须循环一次才能检索到这个1510768441759
,然后再次循环以获得纬度和经度。