Reputation: 295
I tried to do some analog of example from here: http://www.mutualmobile.com/posts/using-data-binding-api-in-recyclerview And everything works correct except image url binding. I received error: Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
java.lang.RuntimeException: Found data binding errors. ****/ data binding error ****msg:Cannot find the setter for attribute 'app.imageUrl' with parameter type java.lang.String. file:D:\Projects\app\src\main\res\layout\view_simple_item.xml loc:43:32 - 43:47 ****\ data binding error ****
My Layout:
...
<data>
<variable
name="item"
type="com.example.Item" />
</data>
...
<ImageView
android:id="@+id/iv_item"
app.imageUrl="@{item.imageUrl}"
... />
...
My adapter:
package com.example.adapters;
import android.databinding.BindingAdapter;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
public class CustomBindingAdapter {
@BindingAdapter("bind:imageUrl")
public static void loadImage(ImageView imageView, String url) {
Picasso.with(imageView.getContext()).load(url).into(imageView);
}
}
Upvotes: 2
Views: 9295
Reputation: 34
Only try to rename the reference inside of the @BindingAdapter
@BindingAdapter({"bind:image_url"})
public static void loadImage(ImageView imageView, String url) {
Picasso.with(imageView.getContext()).load(url).into(imageView);
}
And in your layout this:
...
<data>
<variable
name="item"
type="com.example.Item" />
</data>
...
<ImageView
android:id="@+id/iv_item"
app:image_url="@{item.imageUrl}"
... />
...
Upvotes: 0
Reputation: 3770
Set the argument of BindingAdapter annotation to "app:imageUrl". So you must have this:
@BindingAdapter("app:imageUrl")
instead of this:
@BindingAdapter("bind:imageUrl")
And also what @Alexander Myznikov said - change app.imageUrl
to app:imageUrl
Upvotes: 0
Reputation: 295
Found my problem. Instead of:
app.imageUrl="@{item.imageUrl}"
Must be:
app:imageUrl="@{item.imageUrl}"
Upvotes: 2