asp.net - How to use Observables, RxJava and Android to access a Webapi? -


i trying use rxjava chain list of requests can't figure out how correctly. have list (list_a), want iterate through , send data first service (service_a). response have send new list (list_b) second web service (service_b). flow: -> loop (list_a) send item_a ->> after sending item_a (it needs start second loop (list_b) , send items) -- end loop

that have done far:

private static <t> observable<t> makeobservable(final callable<t> func) {     return observable.create(             new observable.onsubscribe<t>() {                 @override                 public void call(subscriber<? super t> subscriber) {                     try {                         subscriber.onnext(func.call());                     } catch(exception ex) {                         log.e("op_dao", "error reading database", ex);                     }                 }             }); }  public observable<list<visitinfo>> getvisitobservable() {     return makeobservable(this.getvisit())             .subscribeon(schedulers.computation()) ; }  public callable<list<visitinfo>> getvisit() {     return new callable<list<pesquisainfo>>() {         @override         public list<visitinfo> call() throws exception {             list<visitinfo> list = new arraylist<visitinfo>();              // 1. build query             string query = "select * "                     + visit ;             // 2. reference writable db              try {                 cursor cursor = getmywritabledatabase().rawquery(query, null);                 // 3. go on each row, build book , add list                 if (cursor.movetofirst()) {                     {                         visitinfo v = new visitinfo();                         ...                         list.add(v);                     } while (cursor.movetonext());                     closecursor(cursor);                 }                 return list;             } {                 closedatabase();             }         }     };  }  client client = new servicegenerator().createservice(client.class); call<list<ws01>> wsservicecall = client.getdata(user); call<list<ws02>> wsservice2call = client.getdata2(dependent of first call); 

anyone can me please, spent few days trying understand how use rxjava , retrofit being harder expected.

well, need describe problem better; use bit of pseudocode or sequence diagram.

one way want approximately follows:

import static observable.*;  public list<visitinfo> getvisit() { /* db things here */ }  return defer(() -> from(getvisit()))       .flatmap(visit ->           fromcallable(client.getdata(visit))           .flatmapiterable(otherlist -> otherlist)           .flatmap(other -> fromcallable(client.getdata2(visit, other)))); 

if use retrofit, don't need fromcallable calls, make interface methods return observables.