2017-06-25 18 views
0

RxJava + Retrofit + Kotlinでチェーンリクエストを学習しようとしています。 チュートリアルは、RxJava 1.xを使用していたので、RxJava 2.xで再実装しようとすると、.zip()を取得できませんでした。RxJava 1.x .zip()がRxJava 2.0で動作しません

スターウォーズAPIを使用してムービーのリストを返す単純なアプリです。ムービーごとに文字を取得します。

fun loadMoviesFull(): Observable<Movie> { 
    return service.listMovies() 
      .flatMap { filmResults -> Observable.from(filmResults.results) } 
      .flatMap { film -> 
       Observable.zip(
         Observable.just(Movie(film.title, film.episodeId, ArrayList<Character>())), 
         Observable.from(film.personUrls) 
           .flatMap { personUrl -> 
            service.loadPerson(Uri.parse(personUrl).lastPathSegment) 
           } 
           .map { person -> 
            Character(person!!.name, person.gender) 
           } 
           .toList(), 
         { movie, characters -> 
          movie.characters.addAll(characters) 
          movie 
         }) 
      } 
} 

チュートリアルの全体の実装を確認したい場合は、このリンク(コメントはポルトガル語である)である:私はできないので、私はちょうど、IRの構文を知りたい http://www.nglauber.com.br/2017/03/rxjava-kotlin-retrofit-star-wars-api.html

2.xで実装します。

ありがとう、私は悪い英語には申し訳ありません。

答えて

0

BiFunctionが明示的に渡すの種類を必要とし、最後に単一movieを持つべきではないのzip、私は、コンパイラが生成するどのようなエラーか分からないが、非常に、おそらくあなたの関数は、Observable<List<Movie>>を返す必要があります。もちろん最後には.toList()です。

全コード:

fun loadMoviesFull(): Observable<List<Movie>> { 
    return service.listMovies() 
      .flatMap { filmResults -> Observable.from(filmResults.results) } 
      .flatMap { film -> 
       Observable.zip(
         Observable.just(Movie(film.title, film.episodeId, ArrayList<Character>())), 
         Observable.from(film.personUrls) 
           .flatMap { personUrl -> 
            service.loadPerson(Uri.parse(personUrl).lastPathSegment) 
           } 
           .map { person -> 
            Character(person!!.name, person.gender) 
           } 
           .toList(), 
         BiFunction<Movie, Character, Movie>{ movie, characters -> 
          movie.characters.addAll(characters) 
         }) 
      }.toList() 
} 
0

それは私が故に答えとして投稿し、不十分な評判にコメントを追加できなくなります。 rxkotlinを使用していますか? Rx2を使用しているときにSAMのあいまい性の問題に役立つObservable.zip()を含む多くのヘルパー関数があります。あなたのエラーが何であるか知らなくても、それは私が与えることができる最高のアドバイスです。

関連する問題