Data binding support - WonderCsabo/androidannotations GitHub Wiki
Since AndroidAnnotations 4.4
You can use data bound layouts in @EActivity, @EFragment and @EViewGroup annotated classes.
To achieve this, you must annotated these classes with the additional @DataBound annotation.
You have to access the data binding object to bind your data to the UI. To inject the binding object, annotate a non-private field with @BindingObject. The type of the field must extend ViewDataBinding.
You can first access this field in an @AfterViews annotated method.
Example:
@DataBound
@EActivity(R.layout.main_activity)
public class MainActivity extends Activity {
@BindingObject
MainActivityBinding binding;
@AfterViews
void bindData() {
binding.setTitle("Your title"); // example binding
}
}
Method based injection
You can use method injection as well for @BindingObject.
@DataBound
@EActivity(R.layout.main_activity)
public class MainActivity extends Activity {
@BindingObject
void injectBinding(MainActivityBinding binding) {
// assign binding
}
void injectBinding2(@BindingObject MainActivityBinding binding) {
// assign binding
}
}
Errors with generated views and binding adapters
Since data binding V2, you cannot pass generated View classes in your binding adapters, but you still have to use your generated views to let AndroidAnnotations work.
There is a workaround: you can have a parent Activity which inflates the generated views automatically using a little reflection. Subclass that Activity, and then you can reference the normal (not generated) Views in your XML layouts and binding adapters.