可以在科特林列出

时间:2018-10-21 22:17:45

标签: android kotlin rx-java observable

我有这样的服务

 @GET("/")
fun getInfo(@Query("pew") pew1: Double, @Query("pew2") pew2: Double): Observable<PewResponse>

现在,当我有这个

我有一个要填充服务器数据的列表

private var mPewList: MutableList<PewList> = arrayListOf()

然后我有这个功能

override fun getResultFromNetwork(): Observable<PewResponse> {
    val pewObservable = pewService.getInfo("pew1","pew2")
    return pewObservable.concatMap {
      //How do I fill my list ??

    }


}

对此rxJava来说,我还很陌生,所以我看到有人使用Single而其他人使用Observable有什么更好的?

编辑

我正在关注此示例https://github.com/joanby/android-mvp/blob/master/MoviesFeed/app/src/main/java/com/juangabriel/moviesfeed/movies/MoviesRepository.java

现在我想做这样的事情:

@Override
public Observable<Result> getResultFromNetwork() {

    Observable<TopMoviesRated> topMoviesRatedObservable = moviesApiService.getTopMoviesRated(1)
            /*.concatWith(moviesApiService.getTopMoviesRated(2))
            .concatWith(moviesApiService.getTopMoviesRated(3))*/;

    return topMoviesRatedObservable
            .concatMap(new Function<TopMoviesRated, Observable<Result>>() {
                @Override
                public Observable<Result> apply(TopMoviesRated topMoviesRated) {
                    return Observable.fromIterable(topMoviesRated.getResults());
                }
            }).doOnNext(new Consumer<Result>() {
                @Override
                public void accept(Result result) {
                    results.add(result);
                }
            });

}

因此,我看到他填写了结果列表,然后在主持人上执行此操作:https://github.com/joanby/android-mvp/blob/master/MoviesFeed/app/src/main/java/com/juangabriel/moviesfeed/movies/MoviesPresenter.java

1 个答案:

答案 0 :(得分:2)

如果来自服务器的数据是整体数据,则应使用greater(0,[],0):-!, fail. greater(N,[N],1). greater(N,[H|Q],X):-H>N,greater(Q,N,X),X is X+1. ,因为它仅返回一次值。当您的数据分块到达时,Single就会执行。

有关更多详细信息,您可以看到以下答案:https://stackoverflow.com/a/42759432/9060113

编辑:

Observable