J'essaie de filtrer une liste qui pourrait être vide ou non (ou l'élément ne figure pas dans la liste). inboxData est rempli par un autre observable:Filtrage de la liste vide par RxJava et utilisation de 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);
}
Dans ce cas, si response.getData() est vide FirstOrDefault fonctionne jamais. Mais pourquoi? Il indique clairement qu'il vous redonne la valeur par défaut si l'observable précédent n'émet rien.
@ La réponse de Kiskae est correcte. Notez également qu'une fois que vous appelez 'onCompleted' sur un' BehaviorSubject', tous les observateurs suivants recevront uniquement 'onCompleted', jamais de données. Je ne suis pas sûr qu'un 'Sujet 'soit ce que vous cherchez ici. – theFunkyEngineer