Android:在Kotlin中使用自定义BindingAdapters似乎不起作用

问题描述 投票:0回答:1

我一直在使用简单的数据绑定器来更改视图的可见性,如下所示:

public class BindingAdapters {
    @BindingAdapter("shown")
    public static void setShown(View view, boolean show) {
        view.setVisibility(show ? View.VISIBLE : View.GONE);
    }
}

当我把它翻译成Kotlin时:

object BindingAdapters {
    @BindingAdapter("shown")
    fun setShown(view: View, show: Boolean) {
        view.visibility = if (show) View.VISIBLE else View.GONE
    }
}

我得到一个错误,没有“显示”的setter存在。

我究竟做错了什么?

android kotlin android-databinding
1个回答
1
投票

为了让Kotlin对象声明生成静态Java方法,您需要使用@JvmStatic注释该方法,如下所示:

object BindingAdapters {
  @JvmStatic
  @BindingAdapter("shown")
  fun setShown(view: View, show: Boolean) {
    view.visibility = if (show) View.VISIBLE else View.GONE
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.