我有以下代码来从互联网上获取项目列表。
Observable<RealmList<Artist>> popArtists = restInterface.getArtists();
compositeSubscription.add(popArtists.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()).subscribe(artistsObserver));
问题是列表有超过80个项目,我只想获得前5个项目。实现这一目标的最佳方法是什么?
答案 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));