@George Mount是正确的,在您的布局xml中必须添加一个处理程序,该处理程序在您的模型或处理程序类中定义(无论您如何称呼它)。
查看我的答案以获取完整的示例:
{{link1:使用Android Databinding Library进行双向数据绑定}}
以下是该答案中的示例:
示例:
public class AmanteEditModel extends BaseObservable {
private String senhaConfirm;
@Bindable
public String getSenhaConfirm() {
return senhaConfirm;
}
public void setSenhaConfirm(String senhaConfirm) {
this.senhaConfirm = senhaConfirm;
notifyPropertyChanged(BR.senhaConfirm);
}
public TextWatcher getMyEditTextWatcher() {
return new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
setSenhaConfirm(s);
}
};
}
}
在您的布局xml中将EditText更改为以下内容:
<EditText
android:id="@+id/amante_edit_senha_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:hint="Confirme a senha"
android:inputType="textPassword"
android:maxLines="1"
android:text="@{model.senhaConfirm}"
app:addTextChangeListener="@{model.myEditTextWatcher}"
/>
注意
addTextChangeListener的命名空间。该方法可能无法通过android:命名空间使用,因此在这里使用app:。您也可以使用bind:使绑定更清晰。
所以不要忘记添加。
xmlns:app="http://schemas.android.com/apk/res-auto"
或者
xmlns:bind="http://schemas.android.com/apk/res-auto"
将您的XML命名空间添加到其中。
该解决方案适用于所有输入控件,包括自定义控件,只要您在模型中提供正确的侦听器。
{{link1:TextWatcher参考}}