gpt4 book ai didi

android - 根据来自 Observable 的新 API 数据更新 UI

转载 作者:行者123 更新时间:2023-11-29 16:28:38 24 4
gpt4 key购买 nike

我是新手,无法自己处理。我有一种方法,其中一些 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。

非常感谢。

最佳答案

据我了解你的问题 getHead() 应该调用一次,对吗?在这种情况下,我会建议您以这种方式简化代码:

fun getHead(status: String, wenr: Long, test: Boolean): Observable<List<WeKopf>> =
Observable.interval(60, TimeUnit.SECONDS)
.flatMap { apiService.getWEKopf(status, wenr, test) }
.subscribeOn(Schedulers.io())
.unsubscribeOn(Schedulers.computation())
.observeOn(scheduler)
.also {
view.onShowDialog("")
}

然后你应该像这样订阅你的 getHead() 的结果:

getHead(status, wenr, test).subscribe(observer)

顺便说一下,别忘了释放你的 Disposable 对象。

关于android - 根据来自 Observable 的新 API 数据更新 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58338674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com