这是我的firebase-database。
Query lastQuery = databaseReference.child("rawlocations").child("12345678").limitToLast(1);
lastQuery.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Double latt= (Double) dataSnapshot.child("lat").getValue();
Double lngg= (Double) dataSnapshot.child("lng").getValue();
LatLng location=new LatLng(latt,lngg);
});
在这个数据库中,位置每10米更新一次。现在我想引用最近更新的位置?我如何在我的代码中引用它?任何人都可以提供帮助吗?
答案 0 :(得分:0)
试试这个,它可以在我的代码中使用,并且可以反映我孩子的每一个价值
mDatabase.child("raw-locations").child("12345678").addValueEventListener(new ValueEventListener() {
final List<String> lstItems= new ArrayList<String>();
@Override
public void onDataChange(final DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = (String) ds.getKey();
String values = (String) ds.getValue();
Log.e("Values",""+values );
lstItems.add(values );
}
你也可以改变这一行
String values = (String) ds.getValue();
用这个
String Latvalue = (String) ds.child("lat").getValue();
答案 1 :(得分:0)
如果您想获得单个ID的纬度和长度,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference idRef = rootRef.child("raw-locations").child("12345678");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
double lat = ds.child("lat").getValue(Double.class);
double lng = ds.child("lng").getValue(Double.class);
Log.d("TAG", lat + " / " + lng);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
idRef.addListenerForSingleValueEvent(eventListener);
如果你想要所有的id,你需要循环两次。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference rawRef = rootRef.child("raw-locations");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
for(DataSnapshot dSnapshot : ds.getChildren()) {
double lat = dSnapshot.child("lat").getValue(Double.class);
double lng = dSnapshot.child("lng").getValue(Double.class);
Log.d("TAG", lat + " / " + lng);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
rawRef.addListenerForSingleValueEvent(eventListener);