Android DataBindingComponents如何基于每个布局工作?

Android DataBindingComponents如何基于每个布局工作?,android,data-binding,android-databinding,Android,Data Binding,Android Databinding,Android数据绑定库是我学习MVVM的一个迷人的库。 现在有一个问题,在将文本更新到UI之前,如何在每个布局的基础上播放动画。不是使用BindingAdapter、使用静态绑定适配器的全局布局解决方案 从IO16视频中,我知道也许我可以使用DataBindingComponent来实现这种效果,就像setImageUrl示例一样,但我找不到任何关于DataBindingComponents和BindingAdapter注释实例方法如何工作的示例代码,有人能提供一些详细信息吗 ==更新日期20

Android数据绑定库是我学习MVVM的一个迷人的库。 现在有一个问题,在将文本更新到UI之前,如何在每个布局的基础上播放动画。不是使用BindingAdapter、使用静态绑定适配器的全局布局解决方案

从IO16视频中,我知道也许我可以使用DataBindingComponent来实现这种效果,就像setImageUrl示例一样,但我找不到任何关于DataBindingComponents和BindingAdapter注释实例方法如何工作的示例代码,有人能提供一些详细信息吗

==更新日期2016-07-06==

我知道我可以使用带有自定义标记的静态绑定适配器,但这不是我想要的

==更新日期2017-08-04==
我不知道为什么这个问题被标记为重复,如果你知道android数据绑定,另一个问题是完全不同的。只是不知道如何删除重复标记,所以在此进行编辑。

再次观看io16会话后,我终于找到了解决方案:

首先,创建一个类,该类包含任何注释为BindingAdapter的方法

然后创建一个实现DataBindingComponent的类,在这里您只需创建一个getter方法,该方法返回上述类的一个实例

现在,您可以创建此组件的任何实例,并在绑定时使用它,例如在ActivityonCreate中

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mBinding  = DataBindingUtil.setContentView(this, R.layout.activity_main, new OptionBindingComponent());
    mViewModel = new OptionsViewModel(new OptionsRepository(), this);
    mBinding.setVariable(me.zhanghailin.androiddatabindingwithanimations.BR.options, mViewModel);
}

完成了!就是这样,效果是绑定适配器将用于此绑定,而不是默认组件。

再次观看io16会话后,我终于找到了解决方案:

首先,创建一个类,该类包含任何注释为BindingAdapter的方法

然后创建一个实现DataBindingComponent的类,在这里您只需创建一个getter方法,该方法返回上述类的一个实例

现在,您可以创建此组件的任何实例,并在绑定时使用它,例如在ActivityonCreate中

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mBinding  = DataBindingUtil.setContentView(this, R.layout.activity_main, new OptionBindingComponent());
    mViewModel = new OptionsViewModel(new OptionsRepository(), this);
    mBinding.setVariable(me.zhanghailin.androiddatabindingwithanimations.BR.options, mViewModel);
}

完成了!就是这样,效果是绑定适配器将用于此绑定,而不是默认组件。

如何使用片段中的新选项BindingComponent@Marvin@fɪəlɪs在碎片创建使用中DataBindingUtilsetDefaultComponent@fɪəlɪs OptionBindingComponent计划在布局充气时通过。因此,您可以将其作为最后一个参数传递给DataBindingUtil.Inflate、layoutId、parent、attachToParent、bindingComponent或您的LayoutBinding.Inflate、root、AttachRoot,BindingComponent如何从片段中使用新选项BindingComponent@Marvin@fɪəlɪs在碎片创建使用中DataBindingUtilsetDefaultComponent@fɪəlɪs OptionBindingComponent计划在布局充气时通过。因此,您可以将其作为最后一个参数传递给DataBindingUtil.Inflate、layoutId、parent、attachToParent、bindingComponent或您的LayoutBinding.Inflate、root、AttachRoot、bindingComponent
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mBinding  = DataBindingUtil.setContentView(this, R.layout.activity_main, new OptionBindingComponent());
    mViewModel = new OptionsViewModel(new OptionsRepository(), this);
    mBinding.setVariable(me.zhanghailin.androiddatabindingwithanimations.BR.options, mViewModel);
}