在Fragment下,使用SmartRefreshLayout监听RecyclerList的上拉获取更多时
发现retrofit+rxjava 没有进行 http 请求
我在具体方法内都已经打 log 看执行了。
已经执行到对应的 Subscriber onStart钩子,但没有进入到 onNext 钩子。
同时对 App 请求抓包时发现在上拉时根本都没有产生 Http 请求。
而且最奇怪的是,同样的代码,在Activity里是可以的,改为Fragment就会有这样的问题。
实在是搞不懂哪儿有问题,求教了。
注:这个请求是根据 page 来的,打开 App 时会以 0 作为 page 参数请求是正常的(会产生请求并 setadapter,只有在上拉刷新时才会出现以上问题。
相关代码:
public void getPhotoList(Subscriber<PhotoList> subscriber, int page, String keyword) {
Log.d(TAG, "getPhotoList: ");
mPhotoListService.getListPage(page, keyword)
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread(), true)
.subscribe(subscriber);
}
// 在上拉获取更多时会执行这段代码
BaseHttpMethods.getInstance().getPhotoList(mPhotoSubscriber, page, keyword);
//
Subscriber mPhotoSubscriber = new photoSubscriber();
private class photoSubscriber extends Subscriber<PhotoList> {
@Override public void onStart() {
mDialog = ProgressDialog.show(mContext, "提示", "正在获取数据...", false, false);
mDialog.cancel();
}
@Override public void onNext(PhotoList data) {
if (mNextPage == Navigator.FIRST_PAGE) {
Log.d(TAG, "onNext: initrecycler");
initRecycler(data);
} else {
Log.d(TAG, "onNext: addrecycler");
addRecycler(data);
}
mNextPage++;
mLastPage = data.getLast_page();
}
@Override public void onError(Throwable e) {
ToastUtils.show(mContext, "获取时出现了错误...");
mDialog.cancel();
}
@Override public void onCompleted() {
mDialog.cancel();
}
}