Android-наблюдатель не работает после postvalue - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь получить данные в наблюдении, но это не работает, потому что данные не поступают после того, как метод "postvalue" запущен при подписке. Что я делаю не так?

во фрагменте

private fun initMapRoutes(mapRoutes: RecyclerView) {
    val m1 = MapRoute("1", "#ff00dd")
    val mapRouteAdapter = MapRouteAdapter(arrayOf(m1))
    mapRoutes.layoutManager = LinearLayoutManager(activity, LinearLayoutManager.HORIZONTAL, false)
    mapRoutes.adapter = mapRouteAdapter

    val viewModel = ViewModelProviders.of(activity!!).get(OnlineTagiltramViewModel::class.java)
    viewModel.getMapTrams().observe(this, Observer { data -> onMapTramsReceived(data) })
    viewModel.loadMapTrams()
}

fun onMapTramsReceived(data: List<MapTram>?) {
    if (data == null || data.isEmpty()) {
        return
    }


}

в viewmodel

private var onlineTagiltramInteractor: OnlineTagiltramInteractor? = null

private var onlineTagiltramDisposable: Disposable? = null


val mapTrams: MutableLiveData<List<MapTram>> = MutableLiveData()

fun getMapTrams() : LiveData<List<MapTram>> {
    return mapTrams
}

init {
    this.onlineTagiltramInteractor = OnlineTagiltramInteractor()
}

fun loadMapTrams() {
    removeDisposable(onlineTagiltramDisposable)
    onlineTagiltramDisposable = onlineTagiltramInteractor
            ?.loadData()?.subscribe( { data -> mapTrams.postValue(data) },
                    {throwable -> Log.e("s", throwable.message)})
    addDisposable(onlineTagiltramDisposable!!)
}

в интеракторе

class OnlineTagiltramInteractor {

fun loadData() : Flowable<List<MapTram>> {
    val api = RetrofitFactory.instance.onlineTagiltramApiService

    return Flowable.interval(2, TimeUnit.SECONDS)
            .observeOn(Schedulers.io())
            .flatMap { api.getMapTrams() }
}

метод onMapTramsReceived не вызывается

...