Я делаю функцию (Java - Android), которая должна вернуть мне список объектов, заполненных данными из Firebase. Моя проблема в том, что мне нужно отправить результат слушателю сразу после того, как я переберу все элементы в for, взгляните на код:
final DatabaseReference beaconMessageRef = dataSnapshot.getRef().getRoot().child("region_messages/" + regionKey);
beaconMessageRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!dataSnapshot.exists())
FirebaseHelper.this.messageByBeaconListener.onSuccess(null);
for (DataSnapshot regionMessageDS : dataSnapshot.getChildren()) {
RegionMessage regionMessage = regionMessageDS.getValue(RegionMessage.class);
String msgKey = regionMessageDS.getKey();
final DatabaseReference messageRef = regionMessageDS.getRef().getRoot().child("messages/"+msgKey);
messageRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Message msg = dataSnapshot.getValue(Message.class);
FirebaseHelper.this.addMessageByBeacon(msg);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
FirebaseHelper.this.messageByBeaconListener.onFail(databaseError);
}
});
}
List<Message> msgs = FirebaseHelper.this.beaconMessageList;
FirebaseHelper.this.beaconMessageList = null;
FirebaseHelper.this.messageByBeaconListener.onSuccess(msgs);
}
@Override
public void onCancelled(DatabaseError databaseError) {
FirebaseHelper.this.messageByBeaconListener.onFail(databaseError);
}
});
Мне нужно выполнить эту строку: FirebaseHelper.this.messageByBeaconListener.onSuccess(msgs);
сразу после того, как я переберу все элементы в for.
Как я могу этого добиться?