下面是与我想要实现的目标等效的 XML,但没有 XML
<Button
android:id="@+id/bt_start"
android:onClick="@{() -> vm.onClickedStart()}"
android:text='@{vm.btStartLbl}' />
所以如果我有:
ConstraintLayout cl = findViewById(R.id.cl);
Button btn = new Button(MyActivity.this);
btn.setText("How to Data Bind here?");
btn.setOnClickListener(new OnClickListener (){ /* how to databind here? */ });
cl.addView(btn);
如何像上面的 xml 一样对其进行数据绑定(bind)? 这可能吗?
最佳答案
对于自动设置数据,您可以使用ObservableField
自动更新btn
的简化版本:
ObservableField<String> title = new ObservableField<>();
Observable.OnPropertyChangedCallback propertyChangeCallback = new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable sender, int property) {
btn.setText(title.get());
// here what you want to automatically update
}
};
public void onStart() {
// activity/fragment lifecycle method
title.addOnPropertyChangedCallback(propertyChangeCallback);
}
public void onStop() {
// activity/fragment lifecycle method
title.removeOnPropertyChangedCallback(propertyChangeCallback);
}
然后每当你调用title.set("some value");
时,就会自动触发更新。
关于Android - 我可以以编程方式进行数据绑定(bind)吗? - 没有布局 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48386329/