Android-DataBinding-BindingAdapter简单试试-覆盖属性/自定义属性.

接着上篇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

image

效果:

image

其他用法可以移步官网: 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

你可能感兴趣的:(Android-DataBinding-BindingAdapter简单试试-覆盖属性/自定义属性.)