gpt4 book ai didi

java - 从 Observable 获取数组的值

转载 作者:行者123 更新时间:2023-12-01 17:58:09 25 4
gpt4 key购买 nike

我有一个Observable<MoviesResponse> 。我的MovieResponse类包含 getResults()返回 List<Result> 的方法。这个 Result 类有一个 getTitle()返回字符串的方法。我要调用getTitle()我所有的方法Result对象获取我的电影的所有标题。

我使用 foreach 循环通过下面的代码实现了这一点,但我认为有更好的方法通过链接 RxJava 运算符来实现此目的,我只是无法弄清楚......

订阅:

Observable<MoviesResponse> moviesResponseObservable = apiService.getTopRatedMoviesObservable(API_KEY);

subscription = moviesResponseObservable
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<MoviesResponse>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onNext(MoviesResponse moviesResponse) {
List<Result> results = moviesResponse.getResults();
for (Result r:results) {
Log.d(LOG_TAG,r.getTitle());
}
}
});

界面:

public interface ApiService {           
@GET("movie/top_rated")
Observable<MoviesResponse> getTopRatedMoviesObservable(@Query("api_key") String apiKey);
}

最佳答案

您可以使用 flatmap将您的可观察值转换为 Observable<Result>然后使用 map把它变成Observable<String> ,然后您可以订阅。

moviesReponseObservable
.subscribeOn(Schedulers.io())
.flatMapIterable(new Function<MoviesResponse, Iterable<Result>>() {
@Override
public Iterable<Result> apply(@NonNull MoviesResponse moviesResponse) throws Exception {
return moviesResponse.getResults();
}
})
.map(new Function<Result, String>() {
@Override
public String apply(@NonNull Result result) throws Exception {
return result.getTitle();
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<String>() {

@Override
public void onNext(String s) {
Log.d("TAG", s);
}

/* ... */

});

关于java - 从 Observable 获取数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43060320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com