【发布时间】:2019-10-11 09:52:00
【问题描述】:
我太新手了,不能自己处理。我有一种方法,其中一些 API 数据存储在 Observable 中,我试图每 60 秒触发一次此事件。我这样做是因为我想为 recyclerView 提供实际数据。如果新数据从 API 到达,recyclewView 应该刷新。
这是我从 API 获取数据的方法:
fun getHead(status : String , wenr : Long, test : Boolean) {
view.onShowDialog("")
val headResponseObservable: Observable<List<WeKopf>> = apiService.getWEKopf(status, wenr, test) // an action must be done each time when a property’s value changes.
Observable.interval(60, TimeUnit.SECONDS)
.flatMap<Any> { n -> headResponseObservable }
.repeat()
.subscribe()
subscribe(headResponseObservable, this, mainScheduler)
}
订阅方法如下所示:
protected fun <T> subscribe(observable: Observable<T>, observer: Observer<T>, scheduler : Scheduler) {
observable.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.computation())
.observeOn(scheduler)
.subscribe(observer)
}
问题是 Observable 只向 Observer 发送一次数据。之后,UI 不会自行刷新。
override fun onComplete() {
view.onHideDialog()
}
override fun onSubscribe(d: Disposable) {
addToCompositeDisposable(d)
}
override fun onNext(t: List<WeKopf>) {
view.onHideDialog()
view.displayHeads(t)
}
override fun onError(e: Throwable) {
view.onHideDialog()
view.onError("Error getting supplier head: " + e.message)
}
当发出来自 Observable 的新数据时,如何扩展 Observer 以响应事件驱动?我正在寻找类似this 的东西,它只会刷新recyclewView。
目前,只有当我手动一遍又一遍地调用我自己的getHead-方法时,我才能刷新 UI。
非常感谢。
【问题讨论】:
标签: android kotlin observable android-recyclerview