最新要闻

广告

手机

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

家电

环球资讯:Android JetPack~ DataBinding(数据绑定)(一) 集成与使用

来源:博客园

近期将会梳理一下JetPack全家桶的使用,包括DataBinding,Room,ViewModel,LiveData,Navigation等。

本来打算先写DataBinding的使用,没想到在17年的时候已经写过了,这里就补充一点吧,毕竟不是什么新东西

  1. Android数据绑定技术一,企业级开发


    (相关资料图)

  2. Android数据绑定技术二,企业级开发

  3. Android JetPack~ DataBinding(数据绑定)(一) 集成与使用

  4. Android JetPack~ ViewModel (一) 使用

目录

  1. 介绍
  2. 集成到环境
  3. 在Activity、Fragment中使用
  4. BindingAdapter的使用

介绍

DataBinding(数据绑定)发布于2015年的Google I/O大会,旨在减少Android开发中的大量模板代码,增加代码及逻辑清晰度,提高开发效率和维护效率。

它的好处显而易见

  • 不用再findViewById(),我们直接可以在xml文件进行属性赋值
  • xml中可完成简单的逻辑,如@{ xx==null? a ? b}
  • View与逻辑代码解耦性更高,数据与View双向绑定,只需关注数据变化即可
  • .....

集成到环境

很早的时候是需要加入依赖的,不过现在只需要更新SDK,下载最新的Android Support库即可。下面依赖仅供参考

配置工程的Gradle

android {    …    dataBinding {        enabled = true    }}

在Activity、Fragment中使用

使Activity支持DataBinding,在布局的最外层加入””标签即可,直接加在最外层,不会影响已有的代码。acty_jpack_layout.xml这个文件名随便起,但是后面会用到(系统会帮我生成ActyJpackLayoutBinding)
    

在Activity的onCreate方法中

@Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //通过databinding 把activity和view绑定        ActyJpackLayoutBinding mBinding = DataBindingUtil.setContentView(this,R.layout.acty_jpack_layout);    }

在Fragment中onCreateView方法中

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {    mBinding = ActyJpackLayoutBinding.inflate(inflater);    return mBinding.getRoot();}

哦,对了,系统还提供其他的用法比如说,在ViewHolder中

class MyHolder extends RecyclerView.ViewHolder {    MyBinding binding;    MyHolder(View view) {        super(view);        binding = DataBindingUtil.bind(view);    }}

要获取View的子View可以通过DataBindingUtil.getBinding(sunView);

BindingAdapter的使用

这个方法很好用,使用场景也很广,比如说业务需要页面中按钮需要点击后缩放,抬起后还原。也可以加载图片时用Glide框架去加载,而我们只需要在xml文件中加一行代码就OK了。好处就是复用性极高,如果要优化图片质量,只需要在ImageBindAdapter中修改,用到的地方自然就成修改后的。

public class ImageBindingAdapter {    @BindingAdapter("imageUrl")    public static void imageUrl(ImageView view, String imageUrl){        RequestOptions options =                new RequestOptions()                .centerCrop()                .dontAnimate();        Glide.with(view)                .load(imageUrl)                .apply(options)                .into(view);    }}

直接在xml文件中使用

结束!!!

这篇写的很少,主要是之前写过了,有需要可以结合之前两篇。

下篇Android JetPack~ ViewModel (一) 介绍与使用

关键词: 数据绑定 很早的时候 不会影响