You can implement onTextChangeMethod in your data Object
public void onTextChanged(CharSequence newText, int start, int before, int count) {
setStringField(newText.toString());
}
and add
<EditText
...
android:onTextChanged="@{data.onTextChanged}" />
So, your data will be updated every time your text changed.
In addition, if you display yourField on UI it should be ObservableField.
public class Data {
private ObservableField<String> stringField = new ObservableField<>();
public void setStringField(String changingText) {
stringField.set(changingText);
}
public ObservableField<String> getStringField() {
return stringField;
}
public void onTextChanged(CharSequence newText, int start, int before, int count) {
setStringField(newText.toString());
}
}
All layout looks like this:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="data"
type="your.package.Data" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onTextChanged="@{data.onTextChanged}" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{data.stringField}" />
</LinearLayout>
</layout>