簡體   English   中英

Android 數據綁定錯誤:執行失敗 java.lang.RuntimeException:

[英]Android Data Binding Error:Execution failed java.lang.RuntimeException:

我試圖從這里做一些類似的例子: 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);
    }
}

發現我的問題。 代替:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM