android - 无法从 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));
}
解决方案
初始化电台列表。
List<Stations> stations= new ArrayList<>();
添加标记的逻辑对我来说似乎没问题。正如Momen所说,只需将其添加到正确的位置即可。
推荐阅读
- java - 图像视图无法在不同设备之间缩放
- python - Python-peewee 接受 2 个位置参数,但给出了 3 个
- python - 绘制拟合/ GridSearch 等的进度
- arrays - 在使用 for 循环读取 Bash 中的数组时,它只能打印第一个和最后一个值
- azure-devops - 拉取请求触发器正在为所有分支推送运行管道
- java - 如何在java中的exec中运行psql命令
- angular - 如何基于 Components 属性添加 css 类属性
- javascript - 使用 MakeStyles 更改 SVG 填充颜色:如何使用选择器在 SVG 文件中选择特定 ID?
- angular - 带有角度的未处理错误的通用处理程序
- python - 事件日历覆盖周