Intereting Posts
проблема с параметром типа параметра Android Kotlin Dagger2 предоставляет gson: Параметр, указанный как непустой, равен null Kotlin: Reified generics, похоже, не работают правильно для сравнения hash / equals Смещение рамки OpenCV приводит только к синему kotlin todo-mvp использование framents AWS S3 неразрешенный супертип: TransferListener в классе верхнего уровня Kotlin Как получить фиксированное количество изменяемых размеров ячеек без заполнения в javafx? Proguard: Какое правило я могу добавить во избежание, не может найти ссылочный класс? Получение исходного ответа HTML / JSON на ошибку с помощью Retrofit 2 и Kotlin Обменный код между модульными испытаниями и контрольно-измерительными тестами при использовании котлина Как отличить глобальную переменную от локального с тем же именем в Kotlin? Нужно ли обновлять Kotlin каждый раз, когда я работаю над приложением моей компании? Является ли частное свойство «полем»? Контекст не может быть предоставлен без @ Provides- или @ Produces-аннотированного метода в kotlin Карта Mybatis COALESCE (int, 0) на java.lang.Long

Как получить значение ObservableField в android

Привет, у меня есть этот ObservableField в моем java-коде. Я хочу получить значение, которое можно сделать, вызвав метод get на нем.

 val email = ObservableField<String>() 

Это можно сделать, используя подход ниже. Я в замешательстве и не знаю, должен ли я сделать getter здесь, чтобы получить его ценность? или существует другой стандартный подход для получения значения ObservableField я использую RxJava в моем приложении.

 fun login(view: View) { val emailVal = email.get() } 

Я думаю, что достаточно использовать email.get() . Если вы действительно хотите исключить использование .get() в своем коде, вы можете использовать .get() поле:

 val _email = ObservableField<String>() var email: String get() = _email.get() set(value) = _email.set(value) //use fun login(view: View) { val emailVal = email } 

Это именно то, о чем говорит делегация. Делегирование свойства в Kotlin означает наличие класса, который реализует оператор getValue и необязательно setValue , который будет вызываться при доступе или обновлении свойства.

Ваш делегат может выглядеть так:

 class <T> ObservableDelegate { val field = ObservableField<T>() operator fun getValue(self: Any?, prop: KProperty<*>) : T = field.get() operator fun setValue(self: Any?, prop: KProperty<*>, value: T) = field.set(value) } 

Затем вы можете использовать делегат следующим образом:

 val email : String by ObservableDelegate() fun login(view: View) { val emailVal = email } 

Подробнее о делегировании свойств читайте здесь: https://kotlinlang.org/docs/reference/delegated-properties.html