从 firebase 实时数据库中获取 JSON 数组。安卓

我想从我的 Firebase 实时数据库中获取整个 JSON 数组。从实时数据库中获取数组并将其存储在ArrayList自定义类中。

http://img1.mukewang.com/60c1bda700018a6d05230587.jpg


慕后森
浏览 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);

料青山看我应如是

使用此代码(带有地图的示例)&nbsp; &nbsp; Map<String, Place> placeMap;&nbsp; &nbsp; DatabaseReference places;&nbsp; &nbsp; ArrayList<Place> placeData;在创建中&nbsp; &nbsp; &nbsp;database = FirebaseDatabase.getInstance();&nbsp; &nbsp; &nbsp;places = database.getReference("Place");&nbsp; &nbsp; &nbsp;placeMap = new HashMap<>();创建方法(在firebase中获取数据)&nbsp; &nbsp; private void getAllMarkerPlace() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; places.addValueEventListener(new ValueEventListener() {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onDataChange(@NonNull DataSnapshot dataSnapshot) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; placeData = new ArrayList<>();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; place = postSnapshot.getValue(Place.class);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; placeMarker = new LatLng(Double.valueOf(place.getLat()), Double.valueOf(place.getLng()));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; place.setLatLng(placeMarker);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; placeData.add(place);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; placeMap.put(place.getName(), place);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mMap.setOnInfoWindowClickListener(MapsActivity.this);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mMap.addMarker(new MarkerOptions()&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .position(placeMarker)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .title(place.getName()));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mMap.setInfoWindowAdapter(MapsActivity.this);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; public void onCancelled(@NonNull DatabaseError databaseError) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java