2 回答
TA贡献1982条经验 获得超2个赞
我发现了一个很好的调整:
在视图(xml 文件)中添加:
android:afterTextChanged="@{(edtitable)->LoginVM.afterUserNameChange(edtitable)}"
这将触发afterUserNameChange视图模型中的功能。
public void afterUserNameChange(CharSequence s)
{
//Log.i("truc", s.toString());
this.usrNm = s.toString();
}
此功能在用户每次输入后触发EditText
TA贡献1995条经验 获得超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 函数:
fun setUsername(s: Editable){
_username.value = s.toString()
}
而已。现在你的用户名发生了变化,因为它在 viewmodel 中发生了变化。此外,如果您更改 EditText 中的文本,它会自动更新视图模型中的 _username 字段。现在您可以在布局中创建 onClick 函数并使用您在 editText(_username) 中输入的值并进行一些有用的操作。
添加回答
举报
