从Android上的Firebase数据库中读取多个值

时间:2017-01-15 14:56:56

标签: android arrays firebase firebase-realtime-database

我正在尝试从Firebase数据库中的每个孩子读取一些值,然后将它们存储在数组列表中。

首先,我在外面创建了一个变量,因此可以通过任何方法访问它。

    ArrayList<LatLng> latlngs = new ArrayList<>();

然后在onCreate方法上,我做了这个

 mLocationDatabaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            for (DataSnapshot dsp : dataSnapshot.getChildren()) {
                LocationCurrent post = dsp.getValue(LocationCurrent.class);
                Double latitude = Double.parseDouble(post.getLatitude());
                Double longitude = Double.parseDouble(post.getLongitude());
                currentLocationLatLng = new LatLng(latitude, longitude);
                latlngs.add(currentLocationLatLng);

                Log.i("LAT LONGS IN", String.valueOf(latlngs));

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

在那里记录工作正常,我可以看到所有LatLong值。但是当我在onCreate中调用相同的日志但在上面的方法调用之外我得到一个空数组。

Log.i("LAT LONGS OUT", String.valueOf(latlngs));

问题是什么,最好的解决办法是什么?

1 个答案:

答案 0 :(得分:0)

使用addListenerForSingleValueEvent时,onDataChange将在未来的某个时间异步调用回调。如果您尝试在下一行之后记录某些内容,则仍可能无法执行onDataChange回调中的代码。没有解决方法,目前还没有初始化。如果要处理数据,请确保等到触发onDataChange回调。