sagen, dass ich eine Earthquake
Klasse haben, die ein Feld hat public final double magnitude;
, und ich habe ein ähnliches Layout wie diese:Wie formatiere ich ein Double mit Android View-Datenbindungen?
<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>
Hinweis Ich habe "@{String.format(earthquake.magnitude)}"
zu verwenden, um dieses Feld zu verwenden, sonst bekomme ich diesen Fehler:
Cannot find the setter for attribute 'android:text' on android.widget.TextView with parameter type double.
Leider führt dies dazu, dass das Doppel mit voller Genauigkeit gedruckt wird. Wie kann ich den angezeigten doppelten Wert formatieren?
Ein weiterer Ansatz, neben Ihrer Antwort akzeptiert, ist die Bindung an berücksichtigen nicht die 'Earthquake', aber vielleicht etwas mehr entlang den Linien eines 'ErdbebenViewModel'. Ich bin * weit * von einem MVVM-Experten entfernt, aber meine Interpretation des "Ansichtsmodells" besteht darin, dass es eine Darstellung der Daten enthält, die von den Ansichten verwendet werden. 'EarthquakeViewModel' könnte' getMagnitude() 'haben, die die formatierte Zeichenkette zurückgibt, so dass die Formatierungslogik außerhalb der XML-Layout-Ressourcen bleibt. Ich sage nicht, dass das besser oder schlechter ist, aber es war meine ursprüngliche Reaktion auf Ihre Frage zu sehen, bevor ich zu der Antwort kam. – CommonsWare