Как мне форматировать двойную привязку данных Android?
Скажем, у меня есть класс Earthquake
, у которого есть поле public final double magnitude;
, и у меня есть макет, похожий на этот:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="earthquake" type="com.example.Earthquake"/>
</data>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="48dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@{String.format(earthquake.magnitude)}" />
...
</LinearLayout>
</layout>
Примечание. Я использую "@{String.format(earthquake.magnitude)}"
для использования этого поля, иначе я получаю эту ошибку:
Невозможно найти установщик для атрибута "android: text" в файле android.widget.TextView с типом параметра double.
К сожалению, это приводит к тому, что двойное печатание выполняется с полной точностью. Как я могу отформатировать двойное значение, которое отображается?
Ответы
Ответ 1
Я еще не посмотрел на язык выражения привязки в предварительном просмотре M SDK, поэтому я мог бы перейти к выводам, но если это вызвано обычным методом String.format()
, то для этого требуется шаблон. Вы пробовали это?
android:text='@{String.format("%.1f", earthquake.magnitude)}'
Ответ 2
String.valueOf() также является опцией:
android:text="@{String.valueOf(earthquake.magnitude)}"