【发布时间】:2017-06-09 14:00:55
【问题描述】:
我正在制作一个函数 (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);
}
});
我需要在循环遍历 for 中的所有项目之后执行此行:FirebaseHelper.this.messageByBeaconListener.onSuccess(msgs);。
我怎样才能做到这一点?
【问题讨论】:
标签: java android firebase firebase-realtime-database