如果绑定适配器提供 setter,请检查适配器是否正确注释以及参数类型是否匹配

lib*_*oom 6 data-binding android

我在将 dataBinding 与 google codelab 一起使用时遇到了麻烦。
当我尝试使用以下功能时发生了这种情况。

    @BindingAdapter("app:hideIfZero")
    fun hideIfZero(view: View, number: Int) {
        view.visibility = if (number == 0) View.GONE else View.VISIBLE
    }
Run Code Online (Sandbox Code Playgroud)

我像下面的代码一样在 xml 中调用它。

    <ProgressBar
        ...
        app:hideIfZero="@{viewmodel.likes}"
        ... />
Run Code Online (Sandbox Code Playgroud)

viewModel 如下所示。

class SimpleViewModel : ViewModel() {
    ...
    private val _likes = MutableLiveData(0)

    ...
    var likes: LiveData<Int> = _likes
Run Code Online (Sandbox Code Playgroud)

我已经尝试删除 Android Studio 生成的所有缓存,
但它没有按我的意图工作。
所以我认为我错过了一个问题。

我试过这个代码实验室https://codelabs.developers.google.com/codelabs/android-databinding/#7
和我的存储库在这里https://github.com/libliboom/codelab-data-binding

谁让我知道这个问题?

lib*_*oom 3

最后,我通过以下链接解决了我报告的问题。

https://github.com/googlecodelabs/android-databinding/issues/11

您应该添加“kotlin-kapt”,即注释处理器。
很难把这个问题弄清楚。

我还在下面的链接中更新了与此问题相关的存储库。
https://github.com/libliboom/codelab-data-binding/commit/a98e3dc6079f542a49698a4d717b71ad4737dfdf

我希望有一天它能帮助那些为此苦苦挣扎的人。
祝你好运!