public Observable<WatchList> syncWatchlistSection(String accountId) {
String sessionToken = mLocal.getSessionId();
int page = 1;
return getWatchlistFromServerHelper(sessionToken, accountId, page).concatMap(new Function<WatchList, ObservableSource<? extends WatchList>>() {
@Override
public ObservableSource<? extends WatchList> apply(WatchList watchList) throws Exception {
return Observable.fromArray(watchList);
}
});
}
private Observable<WatchList> getWatchlistFromServerHelper(String sessionToken, String accountId, int page) {
return mRestAPI.fetchWatchlistOnServer(sessionToken, accountId, page).concatMap(new Function<WatchList, Observable<WatchList>>() {
@Override
public Observable<WatchList> apply(WatchList watchList) throws Exception {
if (watchList.getPage() == watchList.getTotalPages()) {
return Observable.just(watchList);
}
return Observable.just(watchList).concatWith(getWatchlistFromServerHelper(sessionToken, accountId, page + 1));
}
});
}
mSectionLogic.syncWatchlistSection(String.valueOf(account.getId()))
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Observer<WatchList>() {
... so on ...
{
page: 1,
totalPages: 5,
results: []
}
我做错了什么?我如何将结果与可观察的结果结合起来?最好不是用Lamda符号。
我查看的其他资源:-android rxjava2/retrofit2链接调用与分页令牌
你需要建立可观察的。您可以使用递归,但是如果您有大量的页,您的调用堆栈可能会溢出。在这里看到答案
类似于
private Observable<WatchList> getWatchlistFromServerHelper(String sessionToken, String accountId, int startPage) {
int index = startPage;
BehaviorSubject<Integer> pagecontrol = BehaviorSubject.create(startPage);
Observable<WatchList> ret = pageControl.asObservable()
.concatMap(new Function<Integer,Observable<WatchList>>()
{
Observable<WatchList> apply(Integer page) {
mRestAPI.fetchWatchlistOnServer(sessionToken, accountId, page)
.doOnNext(new Function<watchList ->
(watchList.getPage() == watchList.getTotalPages() ?
Observable.<WatchList>empty().doOnCompleted(()->pageControl.onCompleted()) :
pageControl.onNext(page+1)));
}
}
);
return ret;
}
应该管用。
这里所说的分页,指的是大量数据显示时,每页显示固定的数量的数据,同时显示多个分页链接,用户点击翻页链接或页码时进入到对应的网页。 分页算法中需要处理的问题: (1)当前数据一共有多少条。 (2)每页多少条,算出总页数。 (3)根据总页数情况,处理翻页链接。 (4)对页面上传入的 Get 或 Post 数据,需要从翻页链接中继续向后传。 (5)在页面显示时,根据每页数量和当前传入的页码,设置查询的
问题内容: 我正在创建一个RESTful Web服务(在Golang中),该服务从数据库中提取一组行并将其返回给客户端(智能手机应用程序或Web应用程序)。该服务需要能够提供分页。唯一的问题是,此数据在定期更改的“计算”列上排序(例如,网站上某内容的“竖起大拇指”或“竖起大拇指”的数量),因此 行可以在在客户的要求之间 。 我看了一些PostgreSQL功能,可以潜在地用来帮助我解决这个问题,但是
Java Checkstyle插件刚刚更新到6.0版本(Java8支持)。看来gradle用的是旧版本。我如何升级gradle checkstyle插件到更新的版本?
问题内容: 我们有一个Hadoop集群,我们在上面存储使用Kryo(序列化框架)序列化为字节的数据。我们用于此目的的Kryo版本是从2.21正式版本派生而来的,以将我们自己的补丁应用于我们使用Kryo遇到的问题。当前的Kryo版本2.22也解决了这些问题,但是具有不同的解决方案。结果,我们不能仅仅更改我们使用的Kryo版本,因为这意味着我们将不再能够读取已经存储在Hadoop集群中的数据。为了解决
本文向大家介绍jQuery插件版本冲突的处理方法分析,包括了jQuery插件版本冲突的处理方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了jQuery插件版本冲突的处理方法。分享给大家供大家参考,具体如下: jQuery 的某个插件 当有多个版本同时可能会有冲突,导致代码错误 参考typeahead的处理方法,可以在插件中增加noconflict 方法来解决这个问题(在进入版本的时
问题内容: 我在Android应用程序上使用Retrofit + RxJava,并问自己如何处理API分页以链接调用,直到检索到所有数据。是这样的: 所述ApiResponse对象具有简单的结构: API将返回下一个值,直到最后一页。 有一些好的方法可以做到这一点吗?试图结合一些flatMaps(),但没有成功。 问题答案: 您可以递归建模: 然后,要消耗它, 那应该使您有一个流ResponseO