我正在开发一个应用程序,显示它从互联网上获取的项目列表。我有 2 个按钮 loadMore 和刷新,loadMore - 加载下一批项目,刷新 - 从头开始加载项目。
我正在使用 MVI(模型视图意图)模式。为了简单起见,我使用数字列表创建了一个示例,每个数字将代表一批项目:
val loadSubject = BehaviorSubject.create<Unit>()
val refreshSubject = PublishSubject.create<Unit>()
val list = loadSubject.scanWith(
{ Observable.just(emptyList<Int>()) },
{ listObservable, _ ->
listObservable
.map { it + ++count }
.replay().autoConnect()
}
)
.flatMap { it }
.filter { it.isNotEmpty() }
val listSubscription = {
list.subscribe {
//do whatever with the list
}
}
refreshSubject.scanWith(
listSubscription,
{ disposable, _ ->
disposable.dispose()
listSubscription()
}
).subscribe()
所以现在它可以完美地工作,但订阅在我的 Intent 中,我需要一个带有 Rx 的方法,它可以做完全相同的事情,但让我的 View 订阅。
我想要得到的是:
假设我的清单是[1,2,3]
加载更多新闻我会得到[1,2,3,4]
在刷新新闻生病得到[5]