问题在于如何将数据绑定布局与常规布局混合在一起。
如果要包括常规布局中的数据绑定布局,则需要找到该布局的根视图并对其进行调用
bind()。也许是这样的:
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_picker_dashboard); View bindingRoot = findViewById(R.id.toolbar); LayoutHeaderBinding binding = LayoutHeaderBinding.bind(bindingRoot); ProfileResponse.Payload profilePayload = new ProfileResponse.Payload(); profilePayload.setFirstName("Test"); binding.setProfilePayload(profilePayload);}但是,最好将“活动”的布局设置为数据绑定布局,而不必进行额外的工作:
<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="profilePayload" type="myms.models.ProfileResponse.Payload"/> </data> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Top header --> <include layout="@layout/layout_header" app:profilePayload="@{profilePayload}" /> <!-- DrawerLayout --> </android.support.constraint.ConstraintLayout></layout>然后,您的绑定代码更加简单,并且不易出错:
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ActivityPickerDashboardBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_picker_dashboard); ProfileResponse.Payload profilePayload = new ProfileResponse.Payload(); profilePayload.setFirstName("Test"); binding.setProfilePayload(profilePayload);}另一方面,我认为Android数据绑定和黄油刀在功能上有很大的重叠,我建议您选择其中之一,但不要同时选择两者。



