在MutableLiveData变量上调用postValue时,公开的LiveData调度如何更改?

时间:2020-01-21 18:41:08

标签: android kotlin android-livedata mutablelivedata

在ViewModel中:

private var _someData : MutableLiveData<Boolean> = MutableLiveData()
var someData: LiveData<Boolean> = _someData

public fun someMethod(){
    _someData.postValue(true)
}

在片段中:

viewModel.someData.observe(this, Observer {
    //change posted on MutableLiveData but this LiveData received the changes.
})

由于someData_someData是两个不同的变量,因此即使在onChanged()上发布了值并且进行了更改,如何调用someData的{​​{1}}方法观察到暴露的_someData吗?

1 个答案:

答案 0 :(得分:0)

两个变量都引用相同的对象。唯一的区别是您要公开 k = numpy.array([i*y for y in range(0,N/2) + [0] + range(-N/2+1,0)]) ,以使客户端无法修改其值。由于它只是一个对象,因此在更新 File "test2.py", line 11, in <module> k = np.array([i*y for y in range(0,int(N/2))+[0]+range(int(-N/2+1),0)]) TypeError: unsupported operand type(s) for +: 'range' and 'list' 时,LiveData也将更新。