Java 将数据对象从xml发送到viewmodel

Java 将数据对象从xml发送到viewmodel,java,android,xml,mvvm,Java,Android,Xml,Mvvm,如何将数据对象自身发送到视图模型?当我尝试这样做时,我发现空对象 XML: <variable name="signUpObject" type="com.rabe7.community.model.request.register.RegisterRequest" /> <variable name="signUpClickListener" type="com.rabe7.community.v

如何将数据对象自身发送到视图模型?当我尝试这样做时,我发现空对象

XML:

  <variable
        name="signUpObject"
        type="com.rabe7.community.model.request.register.RegisterRequest" />


    <variable
        name="signUpClickListener"
        type="com.rabe7.community.view_model.user_management.RegisterViewModel" />


      <androidx.cardview.widget.CardView
                    android:id="@+id/cv_sign_up_submit"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_margin="@dimen/dp8w"
                    android:onClick="@{() -> signUpClickListener.onRegisterSubmitClicked(signUpObject)}"
                    card_view:cardElevation="@dimen/dp8w">
为什么这个对象是空的? 我想绑定xml上的所有数据,并将完整的数据对象发送到viewmodel以使用它

XML:

}


请原谅我英语不好

您在活动/片段中设置了这些变量吗?我想指出,这些对象的行为类似于变量,默认情况下没有值。首先,我们在活动/片段中初始化数据绑定对象,然后调用binding.setSignUpObject()和binding.setSignUpClickListener()来设置它们


如果您已经在“活动”中调用了这些函数,请在初始化这些函数的位置添加相关代码。

您是否在“活动/片段”中设置了这些变量?我想指出,这些对象的行为类似于变量,默认情况下没有值。首先,我们在活动/片段中初始化数据绑定对象,然后调用binding.setSignUpObject()和binding.setSignUpClickListener()来设置它们


如果您已经在“活动”中调用了这些函数,请在初始化这些函数的位置添加相关代码。

添加您的viewModel实现和使用数据绑定的位置,因此可以选择“片段”或“活动”。添加您的viewModel实现和使用数据绑定的位置,以便选择“片段”或“活动”。
   public void onRegisterSubmitClicked(RegisterRequest registerRequest){

}
         <EditText
                        android:id="@+id/et_sign_up_email"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:hint="@string/label_email"
                        android:inputType="textEmailAddress"
                        android:maxLines="1"
                        android:text="@={signUpObject.userEmail}" />

   <EditText
                        android:id="@+id/et_sign_up_password"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:hint="@string/label_sign_up_password"
                        android:imeActionLabel="SignIn"
                        android:imeOptions="actionUnspecified"
                        android:inputType="textPassword"
                        android:maxLines="1"
                        android:text="@={signUpObject.userPassword}" />
public class RegisterRequest extends BaseObservable {


@SerializedName("Email")
private String userEmail;
@SerializedName("Password")
private String userPassword;
@Expose
private String userConfirmPassword;
@SerializedName("Phone")
private String userPhone;
@SerializedName("ImagePath")
private String imagePath;
@SerializedName("Name")
private String userName;

//getters

@Bindable
public String getUserEmail() { return userEmail; }
@Bindable
public String getUserPassword() { return userPassword; }
@Bindable
public String getUserConfirmPassword(){return userConfirmPassword;}
@Bindable
public String getUserPhone() { return userPhone; }
@Bindable
public String getImagePath() { return imagePath; }
@Bindable
public String getUserName() { return userName; }

//setters

public void setUserEmail(String userEmail) {
    this.userEmail = userEmail;
    notifyPropertyChanged(BR.userEmail);
}
public void setUserPassword(String userPassword) {
    this.userPassword = userPassword;
    notifyPropertyChanged(BR.userPassword);
}
public void setUserConfirmPassword(String userConfirmPassword) {
    this.userConfirmPassword = userConfirmPassword;
    notifyPropertyChanged(BR.userConfirmPassword);
}
public void setUserPhone(String userPhone) {
    this.userPhone = userPhone;
    notifyPropertyChanged(BR.userPhone);
}
public void setImagePath(String imagePath) {
    this.imagePath = imagePath;
    notifyPropertyChanged(BR.imagePath);
}
public void setUserName(String userName) {
    this.userName = userName;
    notifyPropertyChanged(BR.userName);
}