1
Firebaseデータベース内の各子からいくつかの値を読み込み、それを配列リストに保存しようとしています。AndroidのFirebaseデータベースから複数の値を読み取る
まず、外部変数を作成して、どの方法でもアクセスできるようにしました。 onCreateメソッドに続いて
ArrayList<LatLng> latlngs = new ArrayList<>();
、私がこの
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メソッドで行います。 –