Android: использование пользовательских BindingAdapters в Kotlin, похоже, не работает - PullRequest
0 голосов
/ 28 апреля 2019

Я использовал простой механизм связывания данных, чтобы изменить видимость следующим образом:

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

когда я перевожу это на Котлин так:

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

Я получаю сообщение об ошибке, что установщик для "показанного" не существует.

Что я делаю не так?

1 Ответ

1 голос
/ 28 апреля 2019

Чтобы объявление объекта Kotlin генерировало статические методы Java, вам нужно аннотировать метод с помощью @JvmStatic, например:

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