如何在 RxAndroid 中监听变化然后执行动作?
How to listen change and then perform the action in RxAndroid?
public Flowable<ViewModel> perform(
Flowable<PaginationParam> paginationSource) {
return Flowable.combineLatest(
mConnectionState.getConnectionState(),
mSessionInfo,
paginationSource,
Holder::combine)
.flatMap(this::toViewModel);
}
现在我想在第二页时开始 perform()
所以我的观点是听分页变化,当它不是第一页时(0)然后调用调用 perform()。
final Flowable<PaginationParam > paginationSource =
mPagination.observe(this).filter(it -> it.getOffset() != 0);
我不知道如何组合这些。?
perform(paginationSource)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(viewModel -> {
// doAction
}, ex-> {
// Error
}, ()-> {
// Completed, will not emit new action
})
你可以改变你的perform
功能:
public Flowable<ViewModel> perform(PaginationParam paginationParam) {
return Flowable.combineLatest(
mConnectionState.getConnectionState(),
mSessionInfo,
{state, info -> Holder.combine(state, info, paginationParam)})
.flatMap(this::toViewModel);
}
然后使用它:
paginationSource.flatMap( it -> perform(it))
.subscribe(...)
public Flowable<ViewModel> perform(
Flowable<PaginationParam> paginationSource) {
return Flowable.combineLatest(
mConnectionState.getConnectionState(),
mSessionInfo,
paginationSource,
Holder::combine)
.flatMap(this::toViewModel);
}
现在我想在第二页时开始 perform() 所以我的观点是听分页变化,当它不是第一页时(0)然后调用调用 perform()。
final Flowable<PaginationParam > paginationSource =
mPagination.observe(this).filter(it -> it.getOffset() != 0);
我不知道如何组合这些。?
perform(paginationSource)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(viewModel -> {
// doAction
}, ex-> {
// Error
}, ()-> {
// Completed, will not emit new action
})
你可以改变你的perform
功能:
public Flowable<ViewModel> perform(PaginationParam paginationParam) {
return Flowable.combineLatest(
mConnectionState.getConnectionState(),
mSessionInfo,
{state, info -> Holder.combine(state, info, paginationParam)})
.flatMap(this::toViewModel);
}
然后使用它:
paginationSource.flatMap( it -> perform(it))
.subscribe(...)