2 回答

TA貢獻(xiàn)1982條經(jīng)驗 獲得超2個贊
我發(fā)現(xiàn)了一個很好的調(diào)整:
在視圖(xml 文件)中添加:
android:afterTextChanged="@{(edtitable)->LoginVM.afterUserNameChange(edtitable)}"
這將觸發(fā)afterUserNameChange視圖模型中的功能。
public void afterUserNameChange(CharSequence s)
{
//Log.i("truc", s.toString());
this.usrNm = s.toString();
}
此功能在用戶每次輸入后觸發(fā)EditText

TA貢獻(xiàn)1995條經(jīng)驗 獲得超2個贊
最好使用 LiveData 和 MutableLiveData 模式。在您的 ViewModel LoginVM 中聲明:
private var _username = MutableLiveData<String?>()
var username: LiveData<String?> = null
get() = _username
然后在 EditText 的 xml 中添加:
android:afterTextChanged="@{LoginVM::setUsername}"
android:text="@{LoginVM.username}"
所以還要在你的 LoginVM viemodel 中定義 setUsername 函數(shù):
fun setUsername(s: Editable){
_username.value = s.toString()
}
而已?,F(xiàn)在你的用戶名發(fā)生了變化,因為它在 viewmodel 中發(fā)生了變化。此外,如果您更改 EditText 中的文本,它會自動更新視圖模型中的 _username 字段?,F(xiàn)在您可以在布局中創(chuàng)建 onClick 函數(shù)并使用您在 editText(_username) 中輸入的值并進(jìn)行一些有用的操作。
添加回答
舉報