当我Data Binding API
在 android 中使用时,我想删除样板代码,例如findViewById
.
但是我有一个简单的 login_fragment 需要 auser-name
和 a user-pw
。点击Sign Up
它后应该得到相应的字符串并将其写入我的User-Class
:
public class User extends BaseObservable {
private String user;
private String pw;
public User() {}
@Bindable
public String getUser() {
return user;
}
@Bindable
public String getPw() {
return pw;
}
public void setUser(String user) {
this.user = user;
notifyPropertyChanged(com.example.myuser.lala.BR.user);
}
public void setPw(String pw) {
this.pw = pw;
notifyPropertyChanged(com.example.myuser.lala.BR.pw);
}
}
我的 XML 布局:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data class="LoginData">
<variable
name="logindata"
type="com.example.myname.lala.User" />
</data>
<RelativeLayout
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="@string/user_name"
android:id="@+id/textView"
style="@style/textview_user" />
<EditText
android:hint="@string/enter_name"
android:id="@+id/editText2"
android:text="@{logindata.user}"
style="@style/edittext_user" />
<TextView
android:text="@string/password"
android:id="@+id/textView2"
style="@style/textview_pw" />
<EditText
android:id="@+id/editText3"
android:hint="@string/enter_password"
android:text="@{logindata.pw}"
style="@style/edittext_pw" />
<Button
android:text="@string/login"
android:id="@+id/button2"
style="@style/login_button" />
</RelativeLayout>
</layout>
我将我的变量绑定xml-layout
到 UI:
LoginData logindata = DataBindingUtil.bind(getView());
logindata.setLogindata(new User());
然后在我输入用户名和密码后,我点击注册,我希望数据绑定自动更新user
并通过pw
,但是当我尝试检索用户或密码时:User-Class
setUser
setPw
Log.e("user","" + logindata.getLogindata.getUser()); //output: user null
Log.e("pw","" + logindata.getLogindata.getPw()); //ditto
也许我误解了ViewModel
喜欢我的目的User-Class
...