内部类的Android数据绑定不更新TextView
应用程序运行,但TextView
没有得到更新这里是相关的代码。
activity_picker_dashboard.xml
This layout has databinding .....
这是layout_header.xml
...............
这是我的模型ProfileResponse.java
public class ProfileResponse { public Payload getPayLoad() { return payLoad; } @SerializedName("Payload") private Payload payLoad; public static class Payload { public String getProfileId() { return profileId; } public String getUserId() { return userId; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } @SerializedName("ProfileId") private String profileId; @SerializedName("UserId") private String userId; public void setFirstName(String firstName) { this.firstName = firstName; } public void setLastName(String lastName) { this.lastName = lastName; } @SerializedName("FirstName") private String firstName; @SerializedName("LastName") private String lastName; } }
最后这是我的活动
public class PickerDashboardActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_picker_dashboard); LayoutHeaderBinding binding = LayoutHeaderBinding.inflate(getLayoutInflater()); ProfileResponse.Payload profilePayload = new ProfileResponse.Payload(); profilePayload.setFirstName("Test"); binding.setProfilePayload(profilePayload); ButterKnife.bind(this); }
请提出解决方案。 我已经尝试了很长一段时间了。 PS:我也用黄油刀。
问题在于如何将数据绑定布局与常规布局混合。
如果要从常规布局中包含数据绑定布局,则需要找到布局的根视图并在其上调用bind()
。 也许是这样的:
@Override protected 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); }
但是,最好将Activity的布局设置为数据绑定布局,而不必进行额外的工作:
然后您的绑定代码更简单,更不容易出错:
@Override protected 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数据绑定和butterknife在function上有很大的重叠,我建议选择其中一个,但不是两个。