Я знаю, что можно ссылаться на ресурсы в макете по их идентификатору ресурса:
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)}
Это просто поместит целочисленное значение в placeholder (также это доказывает, что я правильно инициализировал POJO, поэтому я не предоставляю весь макет здесь).
Я также попытался использовать @BindingConversion
, но он не сработал (что на самом деле ожидается, но я все равно пытался) - int
по-прежнему был назначен методу замещения и привязки.
Как я могу явно получить ресурс по этому id в библиотеке DataBinding?