sto usando retrofit e mi sento come rxjava (con retrolambda) sarebbe una buona misura per il seguente flusso:Usa RxJava e retrofit per scorrere la lista e aumentare i risultati basati sul sottointerrogazioni
- lista dei get widgets (http)
per ciascun widget
a) ottenere un elenco di articoli (http) per il dato tipo di widget di
b) salvare tutti coloro che a DB
c) prendere la prima (ultimo articolo) in lista e aggiornamento wi dget.articleName e widget.articleUrl con i valori appropriati da questo articolo- trasformano torna alla lista e completo
Tuttavia io sono sicuro che cosa fare dopo la fase 2 bis. Ecco il mio codice finora
apiService.getWidgets(token)
.flatMapIterable(widgets -> widgets)
.flatMap(widget -> apiService.getArticles(token, widget.type))
...
.toList()
.subscribe(
modifiedWidgets -> saveWidgets(modifiedWidgets),
throwable -> processWidgetError(throwable)
);
Ho giocato in giro con alcuni operatori, ma quando il concatenamento, mi sembra sempre di restringere troppo (ad esempio, ottenere una maniglia su un singolo articolo) e quindi non hanno più accesso ai il widget originale per apportare modifiche.
@GET("/widgets")
Observable<List<Widget>> getWidgets(@Header("Authorization") String token);
@GET("/articles")
Observable<List<Article>> getArticles(@Header("Authorization") String token, @Query("type") String type);
Brilliant! Grazie per aver dedicato del tempo a fornire una risposta così completa. La mia conoscenza di RxJava ha appena aumentato un'altra tacca :) – Damian
Risposta molto bella! –
Ottima risposta ... –