相关疑难解决方法(0)

是否可以将一个ObservableField绑定到另一个?

我知道Android的数据绑定库的目的是观察数据并在数据发生变化时自动更新.

问题:数据是否可以观察其他数据?例如,我可以有一个ObservableField"依赖"或"绑定"另一个或一组其他ObservableFields的值吗?目前,我已经手动实现了这一点 - 每当任何"dependee" ObservableField发生变化时,我都会计算相关字段并更新其值.

细节

我的用例是我希望所有"逻辑"都在View之外 - 所以我想把我所有的逻辑放在"数据"类中(ViewModel如果可能的话).我有一个按钮,其状态我想设置为启用/禁用,具体取决于其他几个字段的内容.这个例子说明了我的想法.

我的布局文件看起来像这样

<layout>
    <data>
        <variable name="register" class="com.example.RegisterViewModel"/>
    </data>
    <LinearLayout>
        <EditText 
            android:id="@+id/edUsername" 
            android:text="@{register.username}"/>
        <EditText android:id="@+id/edPassword" />
        <EditText android:id="@+id/edConfirm" />
        <Button android:text="Register" android:enabled="@{register.isValid}" />
    </LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)

而且,我的View代码如下:

class RegisterView extends View {
    @Override
    protected void onFinishInflate() {
        RegisterViewBinding binding = DataBindingUtil.bind(this);
        RegisterViewModel register = new RegisterViewModel();
        binding.setRegister(register);
        binding.edPassword.setOnFocusChangeListener(new OnFocusChangeListener(){
            @Override public void onFocusChange(View v, boolean hasFocus){
                register.updateUsername(edPassword.getText().toString());
            }
        });

        //Similarly for other fields.
    } …
Run Code Online (Sandbox Code Playgroud)

data-binding android

10
推荐指数
2
解决办法
5015
查看次数

标签 统计

android ×1

data-binding ×1