I am fairly new to rxJava. in my api response, I get information about total number of pages and current page number like:
"pages": 22,
"page": 1,
i am using Retrofit to do api calls in data layer, my api service is like:
@GET("/story")
Observable <StoryCollectionEntity> storyCollection(
@Query("feed_ids") String feed_items,
@Query("page") int page);
then:
public Observable<StoryCollectionEntity> storyCollection() {
return mUserApi.storyCollection(items,page);
}
i did the subscription in domain layer like this:
public void execute(Subscriber UseCaseSubscriber) {
this.subscription = this.buildUseCaseObservable()
.subscribeOn(Schedulers.from(threadExecutor))
.observeOn(postExecutionThread.getScheduler())
.subscribe(UseCaseSubscriber);
}
@Override public Observable buildUseCaseObservable() {
return this.userRepository.stories();
}
i am figuring out on how can i make this observer reacts to recyclerView scrolling event by emitting the result of next page. i.e page 2 to second scrolling event and page 3 on 3rd scrolling ...etc
I'll paste below the solution I'm using - which also uses Retrofit. In the example below, I'm using Retrofit to create an Observable of all public repositories from the GitHub API.
I believe the trick here is that I am recursing on the Observable and concatenating with another Observable is essentially a trigger.
This trigger can emit a variety of ways (perhaps when the user scrolls to the bottom of the page) however in this example, it immediately emits once a full page has been handled.