Nói rằng tôi có một lớp Earthquake
trong đó có một lĩnh vực public final double magnitude;
, và tôi có một bố cục tương tự như này:Tôi làm cách nào để định dạng số tăng gấp đôi bằng cách sử dụng các ràng buộc dữ liệu chế độ xem Android?
<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>
Lưu ý tôi phải sử dụng "@{String.format(earthquake.magnitude)}"
sử dụng lĩnh vực này, khác tôi nhận được lỗi này:
Cannot find the setter for attribute 'android:text' on android.widget.TextView with parameter type double.
Thật không may, điều này dẫn đến bản in hai mặt được in ở độ chính xác đầy đủ. Làm thế nào tôi có thể định dạng giá trị kép được hiển thị?
cách tiếp cận khác, bên cạnh việc trả lời chấp nhận của bạn, là để xem xét ràng buộc không phải là 'Earthquake', nhưng có lẽ một cái gì đó nhiều hơn dọc theo dòng của một 'EarthquakeViewModel'. Tôi * xa * từ một chuyên gia MVVM, nhưng cách diễn giải của tôi về "mô hình xem" là nó có đại diện cho dữ liệu sẽ được sử dụng bởi các khung nhìn. 'EarthquakeViewModel' có thể có' getMagnitude() 'trả về chuỗi được định dạng, do đó định dạng logic được lưu giữ trong các tài nguyên XML bố trí. Tôi không nói điều này tốt hơn hay tệ hơn, nhưng đó là phản ứng ban đầu của tôi khi nhìn thấy câu hỏi của bạn, trước khi nhận được câu trả lời. – CommonsWare