Android DataBinding (一) 基本用法
Android DataBinding (二) 事件處理
Android DataBinding (三) Observable
Android DataBinding (四) 自定義屬性
Android DataBinding (五) 自定義 View 的雙向綁定
Android DataBinding (六) EditText 綁定 TextChangedListener 和 FocusChangeListener (本文)
XML 如下設(shè)定
<EditText
......
app:addTextChangedListener="@{vm.textWatcher}"
app:onFocusChangeListener="@{(view, hasFocus) -> vm.setText(((EditText)view).getText().toString(), hasFocus)}" />
ViewModel 如下設(shè)定
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) {
}
}