吾生也有涯,而知也无涯。这篇文章主要讲述Android登录屏幕:双向绑定EditText和TextView相关的知识,希望能为你提供帮助。
我试图用用户名+密码的数据绑定创建一个简单的登录屏幕。我只有单向绑定:我可以在代码中设置绑定变量并查看它们反映在UI中,但UI更改不会更改变量。
Activity
---
ActivityLoginBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_login);
binding.setLifecycleOwner(this);
mViewModel = ViewModelProviders.of(this).get(LoginViewModel.class);
ViewModel
---
public class UserViewModel {
public ObservableField<
String>
username = new ObservableField<
>
("");
public ObservableField<
String>
password = new ObservableField<
>
("");
public ObservableField<
Boolean>
doRemember = new ObservableField<
>
(false);
public UserViewModel(String username, String password, Boolean doRemember) {
this.username.set(username);
this.password.set(password);
this.doRemember.set(doRemember);
}
}View
---
<
EditText
android:text="@{userVm.username}"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<
TextView
android:text="@{userVm.username}"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
我发现一个网站建议我使用TextWatcher(https://www.bignerdranch.com/blog/two-way-data-binding-on-android-observing-your-view-with-xml/)来实现双向绑定。这是有效的,但这是否真的需要我想绑定的每个视图?!不是有一个更简单的方法吗?
答案哦,双向绑定有一个“@ = {}”语法:O
android:text="@={userVm.username}"
代替
android:text="@{userVm.username}"
【Android登录屏幕(双向绑定EditText和TextView)】作品
推荐阅读
- 使用Android MVP Clean Architecture实现交互者
- 没有Dagger2的Android Kotlin MVVM结构
- android viewmodels之间的inter通信
- 如何从Xamarin Android Activity中调用MvxViewModel()
- Google Apps脚本(表格形式数据处理,如果某些单元格为空,则删除行,同时维护某些列)
- 如何下载以前保存的Google Apps脚本修订版()
- Google App Script在doc中显示提示,但未使用电子表格权限
- 某些Google幻灯片AppScript是否已记录但不受支持()
- 我是否需要更改我的Apps脚本代码,因为Google+登录功能已被弃用()