Адаптер привязки 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}"