我有一个密码
var exampleData = MutableLiveData<String>()
private set
我想将 setter 隐藏为MutableLiveData的值
exampleData.value = "Hi!" // still working
我尝试了几种方法,但是所有方法都在工作!
var exampleData = MutableLiveData<String>()
private set(value) { field = value } // Working!
var exampleData = MutableLiveData<String>()
internal set // Working!
var exampleData = MutableLiveData<String>()
internal set(value) { field = value } // Working!
如何隐藏此二传手?
最佳答案
属性的 setter 与MutableLiveData
无关,因为它在对象本身内部具有可变性。您必须将其转换为LiveData
,这可以通过backing属性来完成。
private val _exampleData = MutableLiveData<String>()
val exampleData: LiveData<String> get() = _exampleData
您可以使用
_exampleData.value = "value"
私下更改值,并且仅公开不可变的LiveData
。