Android Databinding结合资源ID

问题描述 投票:0回答:1

我遇到了一个我以前见过的特殊问题,但现在根本无法解决。

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

在我之前的一个项目中,这已经到位了,但不幸的是我没有注意它是如何被执行的。而现在我根本找不到解决方案。

有没有办法在运行时动态组合资源ID进行绑定?

android android-databinding
1个回答
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()时,地图再次被召唤

© www.soinside.com 2019 - 2024. All rights reserved.