Android 无法从firebase数据库快照读取对象
我试图从Firebase读取纬度和经度,并在这些位置上做标记。但似乎有一些错误崩溃的应用程序,我无法找到甚至在Logcat。尝试在每条语句后放置一些检查日志,发现问题发生在我试图从数据库快照将值放入类对象的地方。我正在尝试使用循环从快照中获取所有对象。这是我的数据库的结构。 我试图将值从数据库快照放入类对象的映射活动代码Android 无法从firebase数据库快照读取对象,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我试图从Firebase读取纬度和经度,并在这些位置上做标记。但似乎有一些错误崩溃的应用程序,我无法找到甚至在Logcat。尝试在每条语句后放置一些检查日志,发现问题发生在我试图从数据库快照将值放入类对象的地方。我正在尝试使用循环从快照中获取所有对象。这是我的数据库的结构。 我试图将值从数据库快照放入类对象的映射活动代码 //reading stations from database List<Stations> stations; mDatabase = FirebaseDa
//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);
//从数据库读取站点
列出电台名单;
mDatabase=FirebaseDatabase.getInstance().getReference().child(“站点”);
ValueEventListener stationListener=新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
//发现错误在这里
对于(DataSnapshot站快照:DataSnapshot.getChildren()){
add(stationsnapshot.getValue(Station.class));
}
}
@凌驾
已取消的公共void(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));
}
//将所有站点数据放置在地图上
对于(inti=0;i1-对象站必须与firebase中的对象相似。就像这样
public class Stations{
public Location location;
public String name
//..getter and setter
public static class Location{
public double latitude;
public double longitude;
//..getter and setter
}
}
这些字段必须是公共的
2-初始化arraylist
List<Stations> stations=new Arraylist();
List stations=new Arraylist();
1-对象站
必须与firebase中的对象相似。就像这样
public class Stations{
public Location location;
public String name
//..getter and setter
public static class Location{
public double latitude;
public double longitude;
//..getter and setter
}
}
这些字段必须是公共的
2-初始化arraylist
List<Stations> stations=new Arraylist();
List stations=new Arraylist();
初始化电台列表
List<Stations> stations= new ArrayList<>();
List stations=new ArrayList();
对我来说,添加标记的逻辑似乎是正确的。正如Momen所说,只需在正确的位置添加标记就可以了。初始化电台列表
List<Stations> stations= new ArrayList<>();
List stations=new ArrayList();
添加标记的逻辑对我来说似乎没有问题。正如Momen所说,只需将其添加到正确的位置就可以了。station1下的第三个键是什么?请尝试删除该额外字段并再次运行。@uneq95我这样做了,但没有帮助。这是我过去所做的。我无法用代码发现问题。请初始化stations数组列表添加之前!station1下的第三个键是什么?请尝试删除该额外字段并再次运行。@uneq95我这样做了,但没有帮助。这是我过去所做的。我无法发现代码的问题。在添加之前初始化stations数组列表!字段不必是公共的。如果有公共getter和setter用于em.在firebase中,对我来说,它必须是公共的,不管有公共getter和setteryah,我只是看到了我的代码。我也编写了公共访问说明符。但是如果强制使用公共访问说明符,我在文档中找不到任何地方。如果你有公共getter和setter,它工作得很好。@uneq95耶!这很奇怪,字段不需要公开。如果有公共getter和setter,它们可以是私有的。在firebase中,对我来说,无论有公共getter和setter,它都必须是公共的。是的,我刚刚看到了我的代码。我也编写了公共访问说明符。但是如果必须使用公共访问说明符,我在文档中找不到任何地方getters和setters它工作得很好。@uneq95耶!它工作得很奇怪,但不知何故我没有得到地图上显示的标记。这与firebase有关吗?我不知道,但我想你也可以帮我。请参阅更新的帖子。好的。让我们看看。你必须执行在onDataChange方法末尾添加标记的代码“将数据添加到列表后”成功,但不知何故,我没有得到地图上显示的标记。这与firebase有关吗?我不知道,但我想你也可以帮助我。请参阅更新的帖子。好的。让我们看看。将数据添加到列表后,你必须执行在onDataChange方法末尾添加标记的代码”