首页 > 解决方案 > 无法从 firebase 数据库快照中读取对象

问题描述

我正在尝试从 Firebase 读取纬度和经度并在这些位置上放置标记。但是似乎有一些错误使应用程序崩溃,即使在 Logcat 上我也找不到。尝试在每个语句之后放置一些检查日志,发现问题发生在我试图将值放入数据库快照中的类对象中。我正在尝试使用循环从快照中获取所有对象。这是我的数据库的结构。 在此处输入图像描述

我试图将数据库快照中的值放入我的类对象的我的地图活动代码。

//reading stations from database
List<Stations> stations;
 mDatabase = FirebaseDatabase.getInstance().getReference().child("STATIONS");

    ValueEventListener stationListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            //found out that error is here
            for(DataSnapshot stationsSnapshot: dataSnapshot.getChildren()){
                stations.add(stationsSnapshot.getValue(Station.class));
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.i("Station Read[ERROR]",databaseError.getMessage());
        }
    };
    mDatabase.addListenerForSingleValueEvent(stationListener);

我的站类代码位置类代码

用于标记从 firebase 获取的地图上的位置的代码。

    //Placing all station data on Maps
    for(int i=0 ; i<stations.size() ; i++){
        LatLng location = new LatLng(stations.get(i).getLocation().getLatitude(),
                stations.get(i).getLocation().getLongitude());
        mMap.addMarker(new MarkerOptions().position(location).title(stations.get(i).getName()));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(location));
    }

标签: androidfirebasefirebase-realtime-database

解决方案


初始化电台列表。

List<Stations> stations= new ArrayList<>();

添加标记的逻辑对我来说似乎没问题。正如Momen所说,只需将其添加到正确的位置即可。


推荐阅读