Переназначить val liveData в viewModel и наблюдать за ним во Fragment. - PullRequest
0 голосов
/ 29 февраля 2020

Я хочу попытаться установить связь между viewModel с фрагментом через liveData.

В viewModel есть метод нажатия кнопки, который получает результат данных веб-ответа и передает его действительным данным, а затем фрагмент наблюдает эти оперативные данные, чтобы можно было отфильтровать условие для запуска заданного действия c.

class MyViewModel: ViewModel() {

    val liveData: LiveData<String> by lazy {  // how to late init val liveData?
        MutableLiveData<String>()
    }

    fun buttonSubmit() {
        liveData = webFetch().fetchLiveData()  // then I can assign web response to it
    }
}

class MyFragment : Fragment() {

    ...

    override fun onCreate(savedInstanceState: Bundle?) {

        ...

        val liveDataObserver = Observer<String> { responseData ->  // is it right way to observe?
            if (responseData...) {
                doSomething()
            }
        }

        myViewModel.liveData.observe(this, liveDataObserver)
    }
}
...