当我尝试在绑定(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/

10-10 18:01
查看更多