Я слишком новичок, чтобы справиться с этим самостоятельно. У меня есть метод, в котором некоторые данные 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 только один раз. После этого пользовательский интерфейс не обновляется сам по себе.
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)
}
Как я могу расширить Observer, чтобы он реагировал на события, когда генерируются новые данные из Observable? Я ищу что-то похожее на this , которое обновит только recyclewView.
В настоящее время я могу обновить пользовательский интерфейс, только если я вручную звони моему getHead
методу снова и снова.
Большое спасибо.