【问题标题】:Android Data Binding Error:Execution failed java.lang.RuntimeException:Android 数据绑定错误:执行失败 java.lang.RuntimeException:
【发布时间】:2015-12-07 20:31:19
【问题描述】:

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

java.lang.RuntimeException:发现数据绑定错误。 ****/ 数据绑定错误 ****msg:找不到参数类型为 java.lang.String 的属性“app.imageUrl”的设置器。文件:D:\Projects\app\src\main\res\layout\view_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);
    }
}

【问题讨论】:

  • 我知道我迟到了,但只需删除“bind:”并创建它:@BindingAdapter("imageUrl") 这就是我添加自定义项和工作的方式

标签: java android data-binding


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    @BindingAdapter("app:imageUrl")
    

    而不是这个:

    @BindingAdapter("bind:imageUrl")
    

    还有 @Alexander Myznikov 所说的 - 将 app.imageUrl 更改为 app:imageUrl

    【讨论】:

      【解决方案3】:

      发现我的问题。而不是:

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

      必须是:

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

      【讨论】:

      • 有什么区别?
      • app COLON 而不是app DOT 别担心。我看了这个 10 分钟,直到我睁大眼睛。
      • 不会为我编译说它找不到 CustomBindingAdapter .imageUrl
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-13
      相关资源
      最近更新 更多