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



我试着从这里做一些模拟的例子:http://www.mutualmobile.com/posts/using-data-binding-api-in-recyclerview一切工作正常,除了图像url绑定。我收到错误:错误:执行任务':app:compileDebugJavaWithJavac'失败。

. lang。RuntimeException:发现数据绑定错误。****/数据绑定错误****msg:无法找到参数类型为java.lang.String的属性'app.imageUrl'的设置器。文件:D:Projectsappsrcmainreslayoutview_simple_item.xml loc:43:32 - 43:47 ****数据绑定错误****

我的布局:

...
<data>       
    <variable
        name="item"
        type="com.example.Item" />
</data>
...
<ImageView
            android:id="@+id/iv_item"
            app.imageUrl="@{item.imageUrl}"
            ... />
...

我的适配器:

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

找到问题了。而不是:

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

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

设置BindingAdapter注解的参数为"app:imageUrl"。所以你必须有这个:

@BindingAdapter("app:imageUrl")

而不是:

@BindingAdapter("bind:imageUrl")

还有@Alexander Myznikov说的——把app.imageUrl改成app:imageUrl

只能尝试重命名@BindingAdapter内部的引用

@BindingAdapter({"bind:image_url"})
    public static void loadImage(ImageView imageView, String url) {
        Picasso.with(imageView.getContext()).load(url).into(imageView);
    }

在你的布局中:

...
<data>       
    <variable
        name="item"
        type="com.example.Item" />
</data>
...
<ImageView
            android:id="@+id/iv_item"
            app:image_url="@{item.imageUrl}"
            ... />
...

最新更新