2017-01-30 3 views
0

Ich habe ein List<JSONObject>, dass ich eine beobachtbare erstellen von Bild-URL über einen Dritten API holen:Ändern Liste auf beobachtbaren

Observable.from(list) 
    .map(jsonObject -> (String) jsonObject.get("url")) 
    .flatMap(url -> buildObservable(url)) 
    .subscribe(async::resume, async::resume); 

Ich muss die ursprüngliche Liste ändern, um die abgerufenen Bild URL zum hinzufügen entsprechendes JSONObject. Derart, dass ursprüngliches JSON-Objekt:

{ 
    "id": "123456", 
    "image": "http://thirdpartyimagehost.com/v123/unique_image_id" 
    "desc": "Lorem ipsum..." 
} 

Nach Abschluss des Dritten API-Aufrufs zum Abrufen der Bild-URL:

{ 
    "id": "123456", 
    "url": "/img/kitten", 
    "desc": "Lorem ipsum..." 
} 

Ist jetzt geändert. Wie kann ich die ursprünglichen Listenelemente den Antworten zuordnen?

Antwort

1

Verwenden Sie die 2-Parameter-Version flatMap:

Observable.from(list) 
    .flatMap(jsonObject -> buildObservable((String) jsonObject.get("url")), 
     (jsonObject, result) -> combine(jsonObject, result) 
    ) 
    .subscribe(async::resume, async::resume); 
+0

funktioniert! Ich denke, ich habe die Tendenz, Streams und Rx zu komplizieren. :) – fakataha

Verwandte Themen