Android DataBinding (一) 基本用法
Android DataBinding (二) 事件处理
Android DataBinding (三) Observable
Android DataBinding (四) 自定义属性
Android DataBinding (五) 自定义 View 的双向绑定
Android DataBinding (六) EditText 绑定 TextChangedListener 和 FocusChangeListener (本文)
XML 如下设定
<EditText
......
app:addTextChangedListener="@{vm.textWatcher}"
app:onFocusChangeListener="@{(view, hasFocus) -> vm.setText(((EditText)view).getText().toString(), hasFocus)}" />
ViewModel 如下设定
public void setText(String text, boolean hasFocus) {
if (hasFocus) {
......
} else {
......
}
}
private TextWatcher textWatcher = new SimpleTextWatcher() {
@Override public void afterTextChanged(Editable s)
......
}
};
为了代码的简洁,定义了 SimpleTextWatcher
public abstract class SimpleTextWatcher implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
}
}