如何获取 android 中 ObservableField 的值

How to get value of the ObservableField in android

您好,我的 java 代码中有这个 ObservableField。我想获取它的值,这可以通过对其调用 get 方法来完成。

val email = ObservableField<String>()

这可以使用以下方法完成。我很困惑,不知道我应该在这里做一个 getter 来获得它的价值吗?或者有不同的标准方法来获取 ObservableField 我也在我的应用程序中使用 RxJava。

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

我觉得用email.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 中委派 属性 意味着有一个 class 实现运算符函数 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