首页 > 解决方案 > 如果绑定适配器提供了设置器,请检查适配器是否正确注释以及参数类型是否匹配

问题描述

我在使用谷歌代码实验室的数据绑定时遇到了麻烦。
当我尝试使用以下功能时发生了这种情况。

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

我在 xml 中调用它,如下面的代码。

    <ProgressBar
        ...
        app:hideIfZero="@{viewmodel.likes}"
        ... />

viewModel 如下所示。

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

    ...
    var likes: LiveData<Int> = _likes

我已经尝试删除 Android Studio 生成的所有缓存,
但它并没有达到我的预期。
所以我认为我错过了一个问题。

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

谁让我知道这个问题?

标签: androiddata-binding

解决方案


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

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

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

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

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


推荐阅读