Firebaseのノードのすべての子を含むマップを返すメソッドを作成しようとしていますが、コールバックを使用する必要があるため空のマップが返されます。Firebaseノードのすべての子をMapとして返す方法
public Map<Date, String> getChildrenAsMap(String nodeId) {
DatabaseReference refernce= dbRoot.child("childName").child(nodeId);
final Map<Date, String> childMap = new HashMap<>();
refernce.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<Date, String> data = (Map<Date, String>) dataSnapshot.getValue();
for (Map.Entry<Date, String> entry : data.entrySet()) {
childMap .put(entry.getKey(), (String) entry.getValue());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w("TAG", "onCancelled", databaseError.toException());
}
});
return childMap;
}
これは機能しません。 – creativecreatorormaybenot
なぜあなたはそれをどう思いますか? –
あなたの 'childMap'は有効範囲外です。return文は非同期イベントを待つことはありません。 – creativecreatorormaybenot