【问题标题】:android 2-way data-binding kotlin mthod not being calledandroid 2-way data-binding kotlin mthod没有被调用
【发布时间】:2020-08-03 15:36:25
【问题描述】:

我想要 android view-model 中的 2 路数据绑定。

所以在 XML 中,我把这个:

            <EditText
                android:text="@={login.username}"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="text"
                android:textColor="@color/colorWhite" />

在我的视图模型中,我有:


    private val username = ObservableField<String>("")
    fun getUsername(): String? {
        Log.d("test",username.get())
        return username.get()
    }
    fun setUsername(username: String) {
        Log.d("test",username)
        this.username.set(username)
    }

但有趣的是,这两种方法都没有被调用。我该如何解决这个问题。我不能只是将它们公开并公开它们,因此其他类可以更改它们的引用。

学习后val是不可变的,我公开了。它仍然不起作用并删除了所有这些,getter 和 setter。

【问题讨论】:

    标签: android kotlin data-binding viewmodel


    【解决方案1】:

    您可以在此处使用 LiveData。如果您希望对字符串的访问是私有的, 创建一个

    private val _username= MutableLiveData<String>("")
    

    并声明您当前公开的变量,将其分配给私有变量:

    val username: LiveData<String> = _username
    

    然后,当您需要更新值时,将新值发布到私有变量。

    _username.postValue("new value")
    

    如果您想要对值进行非私有访问,则只保留第一个并更改它的访问修饰符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多