Android-我可以通过编程方式进行数据绑定吗? -没有布局XML [英] Android - Can I Databinding programatically? - without layout XML

查看:43
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆