Tôi có gần như ý tưởng đơn giản: Tôi muốn tạo Bộ điều hợp cho bộ quay với API ràng buộc dữ liệu và BindingAdapter. Đây là XML Tôi muốn sử dụng:Sử dụng BindingAdapter với một mảng chuỗi từ các tài nguyên
<Spinner
android:id="@+id/country"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:value="@{address.country}"
app:data="@{@array/countries}"
app:keys="@{@array/iso_3166_2}"/>
Địa chỉ đây là một lớp đơn giản trong đó có một lĩnh vực được gọi country
mà là một String và sẽ chứa một chuỗi ISO-3166-2. Để giữ cho nó đơn giản, các giá trị sẽ là "DE" hoặc "US".
này ở đây là của tôi đơn giản arrays.xml
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="iso_3166_2">
<item>DE</item>
<item>US</item>
</string-array>
<string-array name="countries">
<item>@string/country_DE</item>
<item>@string/country_US</item>
</string-array>
</resources>
Đối với các ràng buộc tôi đã viết BindingAdapter này:
@BindingAdapter({"value", "data", "keys"})
public static void generateAdapter(Spinner spinner,
String value,
@ArrayRes int data,
@ArrayRes int keys) {
}
Khi tôi cố gắng để biên dịch mã tôi nhận được lỗi này:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
java.lang.RuntimeException: Found data binding errors.
****/ data binding error ****msg:Identifiers must have user defined types from the XML file. countries is missing it
file:path/to/the/spinner-above.xml
loc:95:31 - 95:39
****\ data binding error ****
Dòng 95 của xml của tôi là dòng này: app:value="@{address.country}"
Bạn có thấy những gì tôi đang làm sai không?
Bằng cách này tôi không chắc chắn về các chú thích có liên quan đến tài nguyên mảng đó có đúng không? Tôi không tìm cách để giới hạn nó vào một mảng chuỗi.
Thú vị tôi sẽ kiểm tra. Yeah! nó hoạt động :-D – rekire