我正在尝试使用一些数据绑定来实现MVVM结构 .
我已经为视图创建了以下xml文件(示例):
<data>
<variable
name="LoginVM"
type="org.ledeme.animekeeper.LogginMV"/>
<EditText
android:id = "@+id/input_loggin"
android:text="@{LoginVM.username}"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_marginTop="200sp"
android:layout_centerHorizontal="true"
android:hint="@string/login"
android:width="200sp"
android:inputType="text"
android:textAlignment="center"
android:singleLine="true"
android:lines="1"
android:maxLines="1"
/>
在View Model(我称之为LogginMV)中,我定义了一个
private ObservableField<String> username = new ObservableField<>("");
绑定用户输入的文本到 username
我使用 username.get()
尝试获取用户名,但我只得到 ""
(我知道这是由于 new ObservableField<>("")
中的括号之间的值,如果它是"test",我会得到"test")
我确实创建了一个getter和setter,如下所示:
public String getUsername(){
return username.get();
}
public void setUsername(ObservableField<String> username) {
this.username = username;
this.username.notifyChange();
}
我的问题是我无法弄清楚如何正确地进行绑定,所以我得到用户输入的内容而不是我在 new ObservableField<>("")
中定义的内容 .
1 回答
我找到了一个很好的调整:
在视图(xml文件)中添加:
这将在视图模型中触发函数
afterUserNameChange
.用户在
EditText
每次输入后触发此功能