【发布时间】:2019-02-08 20:16:09
【问题描述】:
好的,所以我要做的是从 firebase 收集 user_uid 的列表,然后为每个 user_uid 获取图像 url 并将其组合并返回一个对象。我遇到的问题是从异步调用中返回对象。我正在尝试实现 rxjava 来实现这一点,但我仍然得到空对象。下面我将有代码和数据库结构,这样你就可以看到我想要实现的目标,谢谢大家的帮助
异步调用:
private Note createNoteWithArtists(Note note, ArrayList<String> user_uids) {
DatabaseReference db_users = db_root.child("Users");
ArrayList<User> artists = new ArrayList<>();
Note note = note;
for (String each_uid : user_uids) {
db_users.child(each_uid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String uid = dataSnapshot.getKey();
String image = dataSnapshot.child("image").getValue(String.class);
String username = dataSnapshot.child("username").getValue(String.class);
User user = new User(username, null, image, uid);
artists.add(user);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
note.setArtists(artists);
return Note;
}
尝试使用 RxJava:
io.reactivex.Observable<Note> observable = io.reactivex.Observable.create(subscriber -> {
subscriber.onNext(createNoteWithArtists(note, artists));
subscriber.onComplete();
});
observable.subscribe(note -> loadNoteResults.NoteLoaded(note, true)).dispose();
它返回注释,但嵌套的艺术家对象仍然是空的:/
【问题讨论】:
标签: java android firebase asynchronous rx-java