This question already has an answer here:
How do I access an instance variable inside a BindingAdapter when using Android Data Binding?
(1个答案)
2年前关闭。
Android DataBinding库是我学习MVVM的迷人库。
现在存在一个问题,如何在每个布局的基础上将文本更新到UI之前播放动画。 (对于使用
从IO16视频中,我知道也许可以使用
==更新2016-07-06 ==
我知道我可以使用带有自定义标签的静态绑定适配器,但这不是我想要的。
==更新2017-08-04 ==
我不知道为什么这个问题被标记为重复,如果您知道android数据绑定,另一个问题则完全不同。只是不知道如何删除重复标记,因此请在此处进行编辑。
然后创建一个实现
现在,您可以创建此组件的任何实例,并在绑定时使用它,例如在Activity#onCreate中。
做完了!就是这样,结果是绑定适配器将用于此绑定,而不是默认组件。
(1个答案)
2年前关闭。
Android DataBinding库是我学习MVVM的迷人库。
现在存在一个问题,如何在每个布局的基础上将文本更新到UI之前播放动画。 (对于使用
BindingAdapter
,使用静态绑定适配器的全局布局不是解决方案。)从IO16视频中,我知道也许可以使用
DataBindingComponent
来实现这种效果,就像setImageUrl
示例一样,但是我找不到任何有关DataBindingComponents和BindingAdapter注释实例方法的工作方式的示例代码,任何人都可以提供一些示例代码吗?详细吗?==更新2016-07-06 ==
我知道我可以使用带有自定义标签的静态绑定适配器,但这不是我想要的。
==更新2017-08-04 ==
我不知道为什么这个问题被标记为重复,如果您知道android数据绑定,另一个问题则完全不同。只是不知道如何删除重复标记,因此请在此处进行编辑。
最佳答案
再次观看io16会话后,我终于找到了解决方案:
首先,创建一个类,该类的任何方法都带有BindingAdapter
注释。
public class OptionBindingAdapter {
private boolean mOptionsShowing;
@BindingAdapter("android:text")
public void setOption(TextView button, String text) {
if (text == null) {
return;
}
if (button.getTranslationY() > 0) {
button.setText(text);
button.setVisibility(View.VISIBLE);
button.animate()
.translationY(0)
.start();
} else {
button.animate()
.translationY(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, button.getResources().getDisplayMetrics()))
.start();
}
}
}
然后创建一个实现
DataBindingComponent
的类,在这里您只需创建一个getter方法即可返回上述类的实例。public class OptionBindingComponent implements DataBindingComponent {
private OptionBindingAdapter mOptionBindingAdapter = new OptionBindingAdapter();
public OptionBindingAdapter getOptionBindingAdapter() {
return mOptionBindingAdapter;
}
}
现在,您可以创建此组件的任何实例,并在绑定时使用它,例如在Activity#onCreate中。
@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);
}
做完了!就是这样,结果是绑定适配器将用于此绑定,而不是默认组件。
10-04 19:17