空であってもなくてもよいリストをフィルタリングしようとしています(またはリストにないアイテム)。 inboxDataは別のオブザーバブルで埋められます。RxJavaの空リストのフィルタリングとfirstOrDefaultの使用
private BehaviorSubject<InboxResponse> inboxData = BehaviorSubject.create();
public Observable<Item> getInboxItem(String id) {
return inboxData
.flatMap(response -> Observable.from(response.getData()))
.filter(item -> item.getId().equals(id))
.firstOrDefault(null);
}
この場合、response.getData()が空の場合、firstOrDefaultは実行されません。しかし、なぜ?それは、先行する観測値が何も出さない場合、デフォルト値を戻すことを明確に示しています。
@ Kiskaeの答えは正しいです。また、 'BehaviorSubject'で' onCompleted'を呼び出すと、以降のオブザーバーは 'onCompleted'だけを受け取ることになります。決してデータはありません。私は '科目'があなたがここで探しているものであるかどうか分からない。 – theFunkyEngineer