Как мне форматировать двойную привязку данных 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)}"