Android viewmodel Android:ViewModel“;“计算可观测”;
你能在Android中计算出可观测值吗(比如说,在VueJS中)Android viewmodel Android:ViewModel“;“计算可观测”;,android-viewmodel,Android Viewmodel,你能在Android中计算出可观测值吗(比如说,在VueJS中) class MainActivityViewModel():ViewModel(){ val speedInput=MutableLiveData()//传感器输入的实际值。 val speedFactor=MutableLiveData()//根据共享首选项设置 val speed=speedInput*speedFactor//我们需要的值是从两个观察值计算出来的。 } 如果需要将多个LiveData合并到一个中,则有一个解决
class MainActivityViewModel():ViewModel(){
val speedInput=MutableLiveData()//传感器输入的实际值。
val speedFactor=MutableLiveData()//根据共享首选项设置
val speed=speedInput*speedFactor//我们需要的值是从两个观察值计算出来的。
}
如果需要将多个LiveData合并到一个中,则有一个解决方案。它可以将多个LiveData作为一个源,并基于这些源“计算”它自己的值(因此,要获得它的值,您还应该观察它)
大概是这样的:
.........
val speed = MediatorLiveData<Double>()
speed.addSource(speedInput) { value ->
speed.value = computeSpeed(speedInput, speedFactor)
}
speed.addSource(speedFactor) { value ->
speed.value = computeSpeed(speedInput, speedFactor)
}
.........
fun computeSpeed(speedInput: MutableliveData<Double>, speedFactor: MutableliveData<Double>) = speedInput.value * speedFactor.value
。。。。。。。。。
val speed=MediatorLiveData()
speed.addSource(speedInput){value->
speed.value=计算速度(speedInput,speedFactor)
}
speed.addSource(speedFactor){value->
speed.value=计算速度(speedInput,speedFactor)
}
.........
乐趣计算速度(speedInput:MutableliveData,speedFactor:MutableliveData)=speedInput.value*speedFactor.value
.........
val speed = MediatorLiveData<Double>()
speed.addSource(speedInput) { value ->
speed.value = computeSpeed(speedInput, speedFactor)
}
speed.addSource(speedFactor) { value ->
speed.value = computeSpeed(speedInput, speedFactor)
}
.........
fun computeSpeed(speedInput: MutableliveData<Double>, speedFactor: MutableliveData<Double>) = speedInput.value * speedFactor.value