为什么我的ArrayList无法正确填充?

时间:2019-05-10 15:00:42

标签: android firebase arraylist

我正在查询Firebase数据库以检索街道地址,纬度和经度,然后将它们放入ArrayLists中。但是,当我第一次运行该活动时,ArrayList为空,并且只有当我单击返回上一个活动然后再次前进时,Array才会被填充。另外,当我返回上一个活动并转发多次时,ArrayList会不断填充相同的信息,从而使一切重复。

首次打开活动时,日志显示: 设置地址(address1) 设置地址(address2) 设置地址(address3) 获取地址() 获取地址()

刷新活动后, 获取地址(地址1,地址2,地址3)//(这就是我想要的)

再次刷新活动时, 获取地址(地址1,地址2,地址3,地址1,地址2,地址3)

public void queryLocation() {

mFirebaseDatabase = FirebaseDatabase.getInstance();
        firebases = mFirebaseDatabase.getReference("Data");
        firebaseLocationQuery = firebases.orderByChild("Locations");
        firebaseLocationQuery.addChildEventListener(new ChildEventListener() {

            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {

                FirebaseLocations.firebaseLocations(dataSnapshot);
            }

            public void onChildRemoved(DataSnapshot snapshot) {
            }

            public void onCancelled(DatabaseError error) {
            }

            public void onChildChanged(DataSnapshot snapshot, String previousChildName) {
            }

            public void onChildMoved(DataSnapshot snapshot, String previousChildName) {
            }
        });
    }

FirebaseLocations.java

 public class FirebaseLocations {

        private static final String TAG = "MapActivity";
        public static List<String> firebaseStreetAddress1 = new ArrayList<String>(0);
        public static List<Double> firebaseLatitude = new ArrayList<Double>(0);
        public static List<Double> firebaseLongitude = new ArrayList<Double>(0);

        public FirebaseLocations() {
        }

        public static void firebaseLocations(DataSnapshot ds) {

            firebaseStreetAddress1.add(ds.child("Locations/Address_1").getValue().toString());
            FirebaseLocations.setFirebaseStreetAddress1(firebaseStreetAddress1);

            firebaseLatitude.add((Double) ds.child("Locations/Latitude").getValue());
            FirebaseLocations.setFirebaseLatitude(firebaseLatitude);

            firebaseLongitude.add((Double) ds.child("Locations/Longitude").getValue());
            FirebaseLocations.setFirebaseLongitude(firebaseLongitude);
        }

        public static List<String> getFirebaseStreetAddress1() {
            Log.d(TAG, "get address" + firebaseStreetAddress1);
            return firebaseStreetAddress1;
        }

        public static List<Double> getFirebaseLatitude() {
            Log.d(TAG, "get lat" + firebaseLatitude);
            return firebaseLatitude;
        }

        public static List<Double> getFirebaseLongitude() {
            Log.d(TAG, "get long" + firebaseLongitude);
            return firebaseLongitude;
        }

        public static void setFirebaseStreetAddress1(List<String> firebaseStreetAddress11) {
            Log.d(TAG, "set address" + firebaseStreetAddress11);
            FirebaseLocations.firebaseStreetAddress1 = firebaseStreetAddress11;
        }

        public static void setFirebaseLatitude(List<Double> firebaseLatitude1) {
            Log.d(TAG, "set lat" + firebaseLatitude);
            FirebaseLocations.firebaseLatitude = firebaseLatitude1;
        }

        public static void setFirebaseLongitude(List<Double> firebaseLongitude1) {
            Log.d(TAG, "set long" + firebaseLongitude1);
            FirebaseLocations.firebaseLongitude = firebaseLongitude1;
        }
    }

0 个答案:

没有答案