Адаптер привязки Android, передающий несколько аргументов, вызывает ошибку

Я совсем новичок в Android Data Binding. Я следую этому руководству:Библиотека Привязки Данных. Я пытаюсь сделать адаптер, который получает несколько параметров. Вот мой код:

XML

   <ImageView
            android:layout_width="@dimen/place_holder_size"
            android:layout_height="@dimen/place_holder_size"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_centerVertical="true"
            app:url="@{image.imageUrl}"
            app:size="@{@dimen/place_holder_size}"
            />

КЛАСС АДАПТЕРА ПРИВЯЗКИ

public class ViewBindingAdapters extends BaseObservable {

@BindingAdapter({"bind:url", "bind:size"})
public static void loadImage(ImageView imageView, String url, int size) {
    if (!Strings.isNullOrEmpty(url)) {
        Picasso.with(imageView.getContext()).load(url).resize(size, size).centerCrop().into(imageView);
    }
}
....


}

, но я получаю эту ошибку:

java.ленг.RuntimeException: найдены ошибки привязки данных. **** / ошибка привязки данных * * * * msg: не удается найти сеттер для атрибут "app: url" с типом параметра java.ленг.Строка на android.штучка.Просмотрщик фото. папка.:.. li_image_item.XML Лок:30:27 - 30:40 **** ошибка привязки данных****

кто-нибудь знает почему??

спасибо заранее!

3 ответов


попробуй такое

 @BindingAdapter(value={"url", "size"}, requireAll=false)
 public static void loadImage(ImageView imageView, String url, int size) {
        if (!Strings.isNullOrEmpty(url)) {
            Picasso.with(imageView.getContext()).load(url).resize(size, size).centerCrop().into(imageView);
        }
    }

вам не нужно создавать префикс bind:, просто используйте это.

@BindingAdapter({"url", "size"})
public static void loadImage(ImageView imageView, String url, float size) {

}

в xml используйте любой префикс, например app:

app:url="@{image.imageUrl}"