猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
从 firebase 实时数据库中获取 JSON 数组。安卓
我想从我的 Firebase 实时数据库中获取整个 JSON 数组。从实时数据库中获取数组并将其存储在
ArrayList
自定义类中。
慕后森
浏览 216
回答 2
2回答
慕雪6442864
首先,location节点不是一个array在术语中包含其他位置对象的对象。其次,正如我在您的屏幕截图中看到的,您的数据库结构不是很好。您的collion节点应该保存相同类型的对象。在您的情况下,它包含用户对象和location对象。如我所见,在您的位置对象中,您实际上是用户的坐标,为此我建议您将数据库结构更改为:Firebase-root | --- collion | --- userId | --- email: "jawadkhant557@gmail.com" | --- id: "CQuL...ihq1" | --- name: "jawadkhan" | --- location | --- latitude: 31.54614619 | --- longitude: 74.40240774在这种情况下,当您想要获取用户的经纬度时,只需使用以下代码行即可:String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();DatabaseReference uidRef = rootRef.child("collion").child(uid).child("location");uidRef.addListenerForSingleValueEvent(/* ... */);假设你有你的用户,命名为模型类Collion有三个字段email,id,name和location地图加上相应的干将,如果你想获得所有用户对象,请使用以下代码:DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();DatabaseReference collionRef = rootRef.child("collion");ValueEventListener valueEventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for(DataSnapshot ds : dataSnapshot.getChildren()) { Collion collion = ds.getValue(Collion.class); Log.d("TAG", collion.getName()); } } @Override public void onCancelled(DatabaseError databaseError) {}};collionRef.addListenerForSingleValueEvent(valueEventListener);
0
0
0
料青山看我应如是
使用此代码(带有地图的示例) Map<String, Place> placeMap; DatabaseReference places; ArrayList<Place> placeData;在创建中 database = FirebaseDatabase.getInstance(); places = database.getReference("Place"); placeMap = new HashMap<>();创建方法(在firebase中获取数据) private void getAllMarkerPlace() { places.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { placeData = new ArrayList<>(); place = postSnapshot.getValue(Place.class); placeMarker = new LatLng(Double.valueOf(place.getLat()), Double.valueOf(place.getLng())); place.setLatLng(placeMarker); placeData.add(place); placeMap.put(place.getName(), place); mMap.setOnInfoWindowClickListener(MapsActivity.this); mMap.addMarker(new MarkerOptions() .position(placeMarker) .title(place.getName())); mMap.setInfoWindowAdapter(MapsActivity.this); } } @Override public void onCancelled(@NonNull DatabaseError databaseError) { } }); }
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续