1
Firebase 데이터베이스의 각 하위 값을 읽은 다음 배열 목록에 저장하려고합니다.Android에서 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));
무엇이 가장 좋고 무엇이 최선의 해결책입니까?
고맙습니다. 나는 아무런 문제가 없다는 것을 알기 위해 많은 시간을 보냈습니다. 그렇다면 내가 얻은 데이터로 어떻게 작업 할 수 있습니까? onDataChange 콜백이 시작될 때까지 기다리는 것이 무엇을 의미합니까? –
mLocationDatabaseReference.addListenerForSingleValueEvent (...)를 호출하면 onDataChange (...) 메서드 내의 코드가 나중에 실행됩니다. 다음 초 또는 30 초 내에 의미가있을 수 있습니다. 기본적으로 firebase에서 가져 오는 데이터로 수행해야하는 모든 작업은 onDataChange 메소드에서 수행하십시오. –