我正在Android中创建一个健身应用程序,用于存储来自谷歌地图的不同路线。这些路线由纬度和长坐标点组成。我已经设法保存这些点,但我在检索它们时遇到了问题。这些路线可能很大,因此每条路线可能有几百个点。
我现在正尝试从firebase位置获取所有数据并将它们放入列表中,然后使用该列表在地图上显示折线。问题是主线程没有等待列表填充点,所以列表最终没有点。我现在获取点的代码是这样的:
Firebase pointsRef = new Firebase(Config.POINTS_URL).child(point_collection_id);
pointsRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
// do some stuff once
Log.v("There are: ", snapshot.getChildrenCount() + "points");
for (DataSnapshot snap : snapshot.getChildren()) {
Point point = snap.getValue(Point.class);
Point otherPoint = new Point(point.getLatitude(), point.getLongitude());
Log.v("pointsLogging", "otherPoint.getLatitude()" +otherPoint.getLatitude());
Log.v("pointsLogging", "otherPoint.getLongitude()" + otherPoint.getLongitude());
listPoints.add(otherPoint);
Log.v("pointsLogging", "size of list in method" + listPoints.size());
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
Log.v("pointsLogging", "listPoints.size()" + listPoints.size());
这是 logcat
无论如何都要检查是否已添加所有积分?或者有人知道更好的方法吗? 谢谢