我想问一下如何从firebase中检索数据,即获取特定的数据。我的firebase数据库是这样的。
。我想检索圆圈中的数据。
整个火力基地看起来就像这样。
我尝试的是使用datasnapshot和value eventlistener来调用firebase中的数据。
private void getMarkerFromDb()
{
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference dataMarker = FirebaseDatabase.getInstance().getReference();
if (getIntent()!=null) {
lrpTest = (LRP_model) getIntent().getSerializableExtra("lrp");
DatabaseReference routeRef = dataMarker.child("LRP")
.child(userId)
.child("route_models");
routeRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (int counter =0; counter<dataSnapshot.getChildrenCount();counter++) {
for (DataSnapshot ss : dataSnapshot.child("route_models").getChildren()) {
double latitude = ss.child("rtLat").getValue(Double.class);
double longitude = ss.child("rtLng").getValue(Double.class);
LatLng loc = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(loc).title("test")).setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_action_pole));
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
输出没有显示任何内容。
发布于 2019-07-11 15:16:15
更改此设置:
routeRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (int counter =0; counter<dataSnapshot.getChildrenCount();counter++) {
for (DataSnapshot ss : dataSnapshot.child("route_models").getChildren()) {
double latitude = ss.child("rtLat").getValue(Double.class);
double longitude = ss.child("rtLng").getValue(Double.class);
LatLng loc = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(loc).title("test")).setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_action_pole));
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
如下所示:
DatabaseReference routeRef = dataMarker.child("LRP")
.child(userId);
routeRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot ss : dataSnapshot.getChildren()) {
for (DataSnapshot datas : ss.child("route_models").getChildren()) {
double latitude = datas.child("rtLat").getValue(Double.class);
double longitude = datas.child("rtLng").getValue(Double.class);
LatLng loc = new LatLng(latitude, longitude);
mMap.addMarker(new MarkerOptions().position(loc).title("test")).setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ic_action_pole));
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
将引用更改为节点userId
,然后在其中迭代两次以访问route_models
属性。
https://stackoverflow.com/questions/56983519
复制相似问题