Android binding adapter passing multiple arguments cause error
Problem is @dimen/place_holder_size
, it returns float
while you are catching it as int
change you BindingAdapter
method to this
@BindingAdapter({"bind:url", "bind:size"})
public static void loadImage(ImageView imageView, String url, float size) {
}
you can refer this
Update
You don't need to create prefix bind:
, just use this.
@BindingAdapter({"url", "size"})
public static void loadImage(ImageView imageView, String url, float size) {
}
In xml use any prefix like app:
app:url="@{image.imageUrl}"
What I did wrong is the order of the arguments in the function. You can add multiple attributes in Binding Adapter, but they should match the arguments with the same sequence defined in the method.
Here is my code snippet for Kotlin
@BindingAdapter(value = ["bind:brand", "bind:model", "bind:age"], requireAll = false)
@JvmStatic
fun bindProductDetails(linearLayout: LinearLayout, brand: String?, model: String?, age: String?) {
if (brand != null && !brand.isEmpty()) {
//code
//code
}
}
try this
@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);
}
}