Несоответствие типов. Требуется: наблюдатель Нашел:? - PullRequest
0 голосов
/ 24 февраля 2020

Я хочу наблюдать за изменением данных в реальном времени во ViewModel и хочу изменить другие данные в реальном времени, поэтому я использую Mediatorlivedata, я не знаю, как наблюдать это во ViewModel, я получаю ошибку во время компиляции Несоответствие типов , Требуется: Наблюдатель найден:?

class CheckmeasureViewModel(private val repository: UserRepository) : ViewModel() {

var estimateFinancialyear: ArrayList<FinYear> = ArrayList()
var asset = arrayListOf("Select")
var estimate = arrayListOf("Select")
var appPref: AppPref
var estimateyearpos = MutableLiveData<Int>()
var mediatorLiveData: MediatorLiveData<Int> = MediatorLiveData()

init {
    appPref = AppPref.getInstance()!!
    estimateFinancialyear.add(FinYear(0, "Select"))
    estimateFinancialyear.addAll(repository.getFinYears())



    estimateyearpos.observeForever(object : Observer<in Int> {
        fun onChanged(@Nullable integer: Int?) { //Do something with "integer"
        }
    })
}

} enter image description here

1 Ответ

1 голос
/ 24 февраля 2020

Вы не должны наблюдать живые данные в viewModel, попробуйте добавить их в качестве источника для mediatorLiveData и наблюдать их непосредственно в представлении:

val mediatorLiveData: MediatorLiveData<Int> = MediatorLiveData().apply{
   addSource(estimateyearpos) { /*Do something with "integer" */}
}

или даже (если вам не нужно он должен быть изменяемым)

val liveData = Transformations.map(estimateyearpos) { /*Do something with "integer" */}

Обе эти опции будут наблюдать исходные живые данные и применять к ним заданную функцию, но вам все равно нужно наблюдать их в Activity или фрагменте, чтобы правильно получить значения ,

...