Я только начинаю использовать RxJava и изо всех сил пытаюсь понять, как правильно использовать наблюдаемые.
Внизу у меня есть пейджер, и я хотел бы вызвать веб-службу при прокрутке страницы, избегая многих бесполезных вызовов.
Итак, я обнаружил, что оператор «debounce» — это то, что я ищу, но в моем случае он не работает, и веб-служба вызывается каждый раз.
v.pager.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
val itemPosition : Int = layoutManager.findFirstCompletelyVisibleItemPosition();
Observable.just(itemPosition).debounce(1500, TimeUnit.MILLISECONDS).map {
retrieveUserDetail(userList[itemPosition])
}.observeOn(AndroidSchedulers.mainThread()).subscribe()
}
}
})
Что не так с этим кодом?
Observable
вне области обратного вызова слушателя. - person PPartisan   schedule 06.12.2018onNext()
внутри вашего прокрутки. Самым простым, вероятно, будетSubject
(т.е.PublishSubject
). Затем (2) в другом месте подпишитесь на ваш эмиттер с остальной частью вашей цепочки, включая debounce. - person PPartisan   schedule 06.12.2018