当我尝试在绑定(bind)布局中使用数据绑定(bind)和自定义XML标签运行项目时,出现以下描述的生成错误:
布局:
<data>
<variable
name="data"
type="com.melontech.sff.viewmodel.DataViewModel" />
</data>
...
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/placeholder_img"
app:imageUrl="@{data.imageUrl}" />
...
View 模型具有以下绑定(bind)适配器:
@BindingAdapter("bind:imageUrl")
public static void getImageUrl(ImageView imageView, String url) {
Timber.d("LOAD IMAGE WITH URL %s", url);
}
创建ViewHolder并进行绑定(bind)的代码如下:
@Override
public ModelViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ModelListItemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), R.layout.model_list_item, parent, false);
return new ModelViewHolder(binding);
}
生成错误:
Error:Execution failed for task ':app:transformJackWithJackForDebug'.
在Gradle文件中启用了数据绑定(bind)。
如果我将此功能移动到单独的干净项目中并绑定(bind)数据,如下所示:
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
自定义XML属性的工作方式与预期的一样,并且构建成功。
您有什么想法可能是生成错误的原因吗?
最佳答案
我遇到了您遇到的相同问题。
但是我找到了一种绑定(bind)的解决方案,而不是直接调用getImageUrl。
<ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/placeholder_img"
app:imageUrl="@{data.imageUrl}" />
@BindingAdapter("bind:imageUrl")
public static void getImageUrl(ImageView imageView, Object url) {
Timber.d("LOAD IMAGE WITH URL %s", (String) url);
}
使用对象而不是字符串。然后它将起作用。也许是装订或插孔错误。
关于android - 使用自定义XML标签和数据绑定(bind)的Gradle构建失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43047030/