我知道可以通过资源 id 在布局中引用资源:
android:text="@{@string/resourceName}"
但是,我想通过 id 引用资源,这仅在运行时才知道。作为一个简单的例子,假设我们有这样的模型:
public class MyPOJO {
public final int resourceId = R.string.helloWorld;
}
现在我需要将此值用作格式字符串中的值。让我们称之为
<string name="myFormatString">Value is: %s</string>
最直接的方法不起作用:
android:text="@{@string/myFormatString(myPojo.resourceId)}"
这只会将整数值放入占位符(也证明我正确初始化了我的 POJO,所以我没有在这里提供整个布局)。
我也尝试过使用@BindingConversion
,但它没有用(实际上是预期的,但我还是尝试了) -int
仍然分配给占位符并且没有调用绑定方法。
如何通过 DataBinding 库中的 id 显式获取资源?