从Observable获取前5个项目,从网络调用中获取数据

时间:2016-09-09 07:28:44

标签: android rx-java rx-android

我有以下代码来从互联网上获取项目列表。

Observable<RealmList<Artist>> popArtists = restInterface.getArtists();
    compositeSubscription.add(popArtists.subscribeOn(Schedulers.io())
   .observeOn(AndroidSchedulers.mainThread()).subscribe(artistsObserver));

问题是列表有超过80个项目,我只想获得前5个项目。实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

take是您要找的运营商。 (参见此处的文档:http://reactivex.io/documentation/operators/take.html

flatMapIterable将您的RealmList(实施Iterable,将flatMapIterable可以使用的原因)转换为Observable的全部Subscription subscription = restInterface.getArtists() .flatMapIterable(l -> l) .take(5) .subscribeOn(Schedulers.io()) .observeOn(androidSchedulers.mainThread()) .subscribe(artistsObserver); compositeSubscription.add(subscription); 列表中的项目

status

答案 1 :(得分:0)

我猜您无法控制服务器端,因此解决方案是从收到的结果中获取前5项:

Observable<RealmList<Artist>> popArtists = restInterface.getArtists();
compositeSubscription.add(
popArtists.flatMap(list-> Observable.from(list).limit(5)).subscribeOn(Schedulers.io())                      
.observeOn(AndroidSchedulers.mainThread())
.subscribe(artistsObserver));