Вот простой пример:
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="bind" type="com.example.app.MainActivity.Bind"/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onTextChanged="@{bind.textChanged}"
android:text="@{bind.text}"/>
</LinearLayout>
</layout>
и код вида деятельности (с использованием retrolambda):
public class MainActivity extends AppCompatActivity {
private final Bind bind = new Bind();
public class Bind {
public ObservableField<String> text = new ObservableField<>();
public TextViewBindingAdapter.OnTextChanged textChanged = (s, start, before, count) -> {
System.out.println("New value: " + s);
};
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
binding.setBind(bind);
}
}
Я получил его! Спасибо – araraujo
В rc1 вы можете иметь обработчики событий для любого события в представлении. Например, 'android: onTextChanged = "@ {myObj.textChanged}"'. Я знаю, что это не двусторонняя привязка данных, но это облегчает жизнь. –
Двунаправленная привязка данных стала доступной в то же время для различных компонентов. См. Http://stackoverflow.com/documentation/android/111/data-binding-library/6634/built-in-two-way-data-binding#t=201704111334151449175 для получения более подробной информации – aha