代码之家  ›  专栏  ›  技术社区  ›  N Sharma

如何在android中获得ObservaleField的价值

  •  1
  • N Sharma  · 技术社区  · 6 年前

    嗨,我有这个 ObservableField 在我的java代码中。我想知道它的价值,这可以通过调用 get

    val email = ObservableField<String>()
    

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

    fun login(view: View) {
        val emailVal = email.get()
    }
    
    2 回复  |  直到 6 年前
        1
  •  4
  •   msrd0 Gordon Linoff    6 年前

    这正是授权的意义所在。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

        2
  •  1
  •   CrazyApple    6 年前

    我认为它足够好用 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
    }