Android数据绑定错误:执行失败java.lang.RuntimeException:

时间:2015-09-11 10:00:36

标签: java android data-binding

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

  

java.lang.RuntimeException:发现数据绑定错误。   **** /数据绑定错误****消息:无法找到属性' app.imageUrl'参数类型为java.lang.String。 file:D:\ Projects \ app \ src \ main \ res \ layout \ view_simple_item.xml loc:43:32 - 43:47 **** \ data binding error ****

我的布局:

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

3 个答案:

答案 0 :(得分:2)

发现我的问题。而不是:

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

必须:

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

答案 1 :(得分:0)

将BindingAdapter注释的参数设置为“app:imageUrl”。所以你必须拥有这个:

@BindingAdapter("app:imageUrl")

而不是:

@BindingAdapter("bind:imageUrl")

以及@Alexander Myznikov所说的 - 将app.imageUrl更改为app:imageUrl

答案 2 :(得分:0)

仅尝试重命名@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}"
            ... />
...