当我尝试使用数据绑定和绑定布局中的自定义 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 Model 具有以下 Binding 适配器:
@BindingAdapter("bind:imageUrl")
public static void getImageUrl(ImageView imageView, String url) {
Timber.d("LOAD IMAGE WITH URL %s", url);
}
创建 ViewHolder 并进行绑定的代码如下:
@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'.
com.android.jack.ir.JNodeInternalError: java.lang.Exception: java.lang.RuntimeException: 失败,详情请查看日志。无法生成视图活页夹 java.lang.IllegalArgumentException: element public default java.util.stream.IntStream codePoints() 不是包含类型 java.lang.String 的成员,也不是 com.android.jack.eclipse 的任何超类。 jdt.internal.compiler.apt.model.TypesImpl.asMemberOf(TypesImpl.java:129) 在 android.databinding.tool.reflection.annotation.AnnotationMethod.(AnnotationMethod.java:49) 在 android.databinding.tool.reflection.annotation .AnnotationClass.getDeclaredMethods(AnnotationClass.java:314) 在 android.databinding.tool.reflection.ModelClass.getAbstractMethods(ModelClass.java:401) 在 android.databinding.tool.expr.MethodBaseExpr.resolveListenersAsMethodReference(MethodBaseExpr.
在 Gradle 文件中启用了数据绑定。
如果我将这个功能移动到一个单独的干净项目中并像这样绑定数据:
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
自定义 XML 属性按预期工作并且构建成功。
您有什么想法可能是构建错误的原因吗?