为什么这个BindingAdapter在Kotlin中不起作用?

Sil*_*yte 5 android kotlin android-binding-adapter

我有一个ViewModel:

val imageUrl = ObservableField<String>()
Run Code Online (Sandbox Code Playgroud)

我的布局XML有:

<ImageView
    ...
    app:url="@{viewModel.imageUrl}"
    .../>
Run Code Online (Sandbox Code Playgroud)

我有一个顶级函数的BindingAdapters文件:

@BindingAdapter("url")
fun loadImage(view: ImageView, url: String?) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

data binding error msg:Cannot find the setter for attribute 'app:url' with parameter type android.databinding.ObservableField<java.lang.String> on android.widget.ImageView.
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?这与我在Java中设置绑定适配器的方式完全相同,减去了静态函数.

Sil*_*yte 23

这个问题是由应用程序的build.gradle中缺少kapt引起的.将以下内容添加到build.gradle并用"kapt"替换所有"annotationProcessor"依赖项可修复此问题.

apply plugin: 'kotlin-kapt'
Run Code Online (Sandbox Code Playgroud)