Android-我可以通过编程方式进行数据绑定吗? -没有布局XML [英] Android - Can I Databinding programatically? - without layout XML
本文介绍了Android-我可以通过编程方式进行数据绑定吗? -没有布局XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面的XML与我要实现的等效,但没有XML
Below is XML equivalent of what I'm trying to achieve, but without 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数据绑定?
是否可能?
how to databind it as equivalent as xml above? is it possible?
推荐答案
对于自动设置数据,您可以使用 ObservableField
For automatic setting data, you could use ObservableField
用于自动更新 btn
的简化版本:
Simplified version for auto-updating 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(一些值);
,它将自动触发更新。
And then whenever you call title.set("some value");
, it will be automatically trigger the update.
这篇关于Android-我可以通过编程方式进行数据绑定吗? -没有布局XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文