我试着从这里做一些类似的例子: 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);
}
}
答案 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}"
... />
...