Data binding and fragments
When working with the data binding framework, it's important to put some additional thought into where to encapsulate the various parts of your user interface. As you can hook the logic directly into the layout files, it will often be a better idea to use classes similar to the DatePickerWrapper
you wrote in Chapter 3, Taking Actions, with an <include>
and <merge>
tag, rather that wrapping groups of components in classes. Data-bound layouts that are included in other layouts still have variables, and it's the responsibility of the outer layout to pass those variables downward, into the included layout file. For example, a layout including a date picker might look something like this:
<include layout="@layout/merge_date_picker" app:date="@{user.dateOfBirth}" android:layout_width="match_parent" android:layout_height="wrap_content"/>
As long as either user
or its dateOfBirth
is Observable
, the layout will automatically reflect...