我想问一下如何从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) {
}
});
}
}
输出未显示任何内容。
答案 0 :(得分:0)
更改此:
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
属性。