Android数据绑定结合了资源ID

时间:2019-04-16 15:41:01

标签: android android-databinding

我遇到了一个以前已经解决过的特有问题,但现在根本解决不了。

我正在将DataBinding与Lifecycle对象(即ViewModel和LiveData)一起使用,并且有一个屏幕,根据状态,我必须显示多个标签。这些以数字标识符(例如@string/label_1@string/label_2等)的形式存储为资源。这样,我只需要在ViewModel中增加一个LiveData<Int>计数器,视图就会自动更新。

在我从事的上一个项目中,它已经存在,但是不幸的是,我没有注意它的执行方式。现在我根本找不到解决方案。

是否可以在运行时动态组合资源ID以进行绑定?

1 个答案:

答案 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()时,地图都会再次被呼叫