接着上篇MonkeyLei:Android-androidx-DataBinding入门快速上手总结(有点小坑,暂时未深入),继续:
/**
* 扩展覆盖属性setPaddingLeft
*
* @param view
* @param padding
*/
@BindingAdapter("android:paddingLeft")
public static void setPaddingLeft(View view, int padding) {
view.setPadding(padding, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom());
}
/**
* 自定义设置图片属性 - 在匹配时自定义命名空间会被忽略
*
* @param view
* @param bind:imageUrl
* @param bind:error
*/
@BindingAdapter({"imageUrl", "error"})
public static void loadImage(ImageView view, String url, Drawable error) {
view.setImageDrawable(error);
Toast.makeText(view.getContext(), "url:" + url + " error:" + error, Toast.LENGTH_LONG).show();
}
用法:
注意: - 截图里面的ImageView高度设置,后来更改了100dp
效果:
其他用法可以移步官网: BindingAdapter | Android Developers
这个如果打算采用的话,可以用来大大简化图片控件的设置,以及简化很多方法样式的统一设置。等真正用到项目应该就能遇到很多问题,到时候再完善吧!
Android DataBinding使用详解(一)其他参考。。建议都自己实践过一遍...
说实话,xml里面东西太多确实有点烦,哈哈。。。。So,
Databinding的缺点:
综上我们介绍了Mvvm模式的优点,databinding是实现Mvvm模式的一种数据绑定框架,自然拥有上述优点,那么databinding有哪些缺点呢?
1、databinding的View层UI显示是在xml文件中实现的,当出现问题时,无法确定是Model的问题还是xml的问题,而且xml中也不方便调试。
2、基于数据驱动的databinding ,在比较大的模块时,Model层数据可能会比较大。而且在释放的时候不能像其他模式一样,不同View的数据无法根据各自View的生命周期来进行释放,而是在整个页面销毁时统一释放,这样就会占用更大内存。
3、View的复用。我们在项目中经常用到View的复用。而在databinding中 View在布局文件中可以绑定不同的model,在复用时除了要考虑View的复用之外,还需要考虑model的问题。
4、当然还有一个缺点。对于做前端开发的开发者来说,在布局文件中写对应的绑定数据和事件的逻辑是很正常的操作,但是对于移动开发者而言,这会是一个全新的体验,也许有人就无法接受这种情况。
MVP+DataBinding打算试一下,目前自己的项目还是MVP结构....
ViewModel+LiveData+Repository实现MVVM的设计模式 - 准备快速入手!
**补充一波Android_Mvp+DataBinding最佳实战: **https://blog.csdn.net/hqiong208/article/details/53579424