Как сравнить строки в файле XML с помощью привязки данных
Как можно сравнить значение поля моего объекта String с другим значением String в файле XML с помощью привязки данных? Можно ли сделать это в файле XML или я должен создать метод где-то в моем проекте с @BindingAdapter
аннотаций? Ниже то, что я пробовал до сих пор, и это не сработало. Было бы также хорошо сравнить со значением ресурса String, а не со значением строки в жестком коде.
<RadioGroup
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RadioButton
android:id="@+id/male"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="@{user.gender.equalsIgnoreCase("male")}"
android:text="@string/male"/>
<RadioButton
android:id="@+id/female"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="@{user.gender.equalsIgnoreCase("female")}"
android:text="@string/female"/>
</RadioGroup>
Спасибо за помощь.
1 ответ
У вас это почти правильно. Строковые константы не могут использовать двойные кавычки в двойных кавычках в XML, поэтому привязка данных Android поддерживает использование обратных кавычек в выражении:
<RadioButton
android:id="@+id/male"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="@{user.gender.equalsIgnoreCase(`male`)}"
android:text="@string/male"/>
Это позволяет смешивать символьные константы с одинарными кавычками и строковыми константами.
XML также позволяет использовать одинарные кавычки для значений атрибутов, поэтому вы можете использовать двойные кавычки в выражении. Это более распространенный подход:
<RadioButton
android:id="@+id/female"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked='@{user.gender.equalsIgnoreCase("female")}'
android:text="@string/female"/>
Вы можете пропустить все это и использовать строковые ресурсы или константы:
<RadioButton
android:id="@+id/male"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="@{user.gender.equalsIgnoreCase(@string/male)}"
android:text="@string/male"/>
<RadioButton
android:id="@+id/female"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="@{user.gender.equalsIgnoreCase(StringConstants.FEMALE)}"
android:text="@string/female"/>