我遇到了一个以前已经解决过的特有问题,但现在根本解决不了。
我正在将DataBinding与Lifecycle对象(即ViewModel和LiveData)一起使用,并且有一个屏幕,根据状态,我必须显示多个标签。这些以数字标识符(例如@string/label_1
,@string/label_2
等)的形式存储为资源。这样,我只需要在ViewModel中增加一个LiveData<Int>
计数器,视图就会自动更新。
在我从事的上一个项目中,它已经存在,但是不幸的是,我没有注意它的执行方式。现在我根本找不到解决方案。
是否可以在运行时动态组合资源ID以进行绑定?
答案 0 :(得分:0)
您可以使用Transformations.map。例如。
private val state = MutableLiveData<State>()
val identifier: LiveData<Int> = Transformations.map(state) {
when (it) {
stateA -> R.string.label_1
else -> R.string.label_2
}
}
每次您致电state.value =
或state.postValue()
时,地图都会再次被呼叫