简体   繁体   中英

Android Data Binding Error:Execution failed java.lang.RuntimeException:

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);
    }
}

Found my problem. Instead of:

app.imageUrl="@{item.imageUrl}"

Must be:

app:imageUrl="@{item.imageUrl}"

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

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}"
            ... />
...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM