Android Studio 3.6中使用视图绑定替代findViewById的方法

  

 Android Studio 3.6中使用视图绑定替代findViewById的方法

  

从Android Studio 3.6开始,视图绑定能够通过生成绑定对象来替代findViewById,从而可以帮您简化代码,移除虫,并且从findViewById的模版代码中解脱出来。

  

  
      <李>在构建。gradle中就可以方便快捷地开启视图绑定且无须额外引入依赖库李   <李>视图绑定会为模块中的每一个布局文件生成一个绑定对象李   <李> (activity_awesome。李xml→ActivityAwesomeBinding.java)   <李>布局文件中每一个带有id的视图都会在绑定对象中有一个对应的属性,这个属性将拥有正确的类型,并且空安全李   <李>视图绑定完美支持Java和芬兰湾的科特林编程语言李   
  

腾讯视频链接

  https://v.qq.com/x/page/h0931mdo8ly.html

  

Bilibili视频链接

  https://www.bilibili.com/video/av95393509/

  

<强>

  

开启视图绑定无须引入额外依赖,从Android Studio 3.6开始,视图绑定将会内建于Android Gradle插件中需。要打开视图绑定的话,只需要在构建。gradle文件中配置viewBinding选项:

     //需要安卓Gradle 3.6.0插件   android {   viewBinding {   启用=true   }   }      

工作室在Android 4.0中,viewBinding变成属性被整合到了buildFeatures选项中,所以配置要改成:

     //Android Studio 4.0   android {   buildFeatures {   viewBinding=true   }   }      

配置完成后,视图绑定就会为所有布局文件自动生成对应的绑定类。无须修改原有布局的XML文件,视图绑定将根据您现有的布局自动完成所有工作。

  

视图绑定将会根据现有的XML文件,为模块内所有的布局文件生成绑定对象。

  

您可以在任何需要填充布局的地方使用绑定对象,比如片段,活动,甚至是RecyclerView适配器(或者说是ViewHolder中)。

  

  

假如您有一个布局文件名叫activity_awesome。xml,其中包含了一个按钮和两个文本视图。视图绑定会为这个布局生成一个名叫ActivityAwesomeBinding的类,布局文件中所有拥有id的视图,都会在这个类中有一个对应的属性:

        覆盖乐趣>   最后公共类ActivityAwesomeBinding实现ViewBinding {   @NonNull   私人最终ConstraintLayout rootView;   @NonNull   公共最后按钮按钮;   @NonNull   公众最终TextView潜台词;   @NonNull   公众最终TextView标题;      

△视图绑定生成的属性。可以看到它们都是类型安全以及空安全的

  

视图绑定会根据每个拥有id的视图生成类型正确的属性。他也会为根布局生成rootView属性并通过getRoot暴露给您。视图绑定没有添加任何额外的逻辑,他只是把视图属性暴露给您,从而帮您在不使用findViewById的情况下也能调用它们。这样一来便保证了生成文件简洁性(当然也避免了拖慢构建速度)。

  

如果您正在使用芬兰湾的科特林,视图绑定的生成类也已经对互操作进行了优化。通过@Nullable和@NonNull注解的使用,Kolin可以正确的将属性暴露为空安全类型。如果想要了解更多关于两种语言的互操作问题,请查阅文档:在芬兰湾的科特林中调用Java。

        私人ActivityAwesomeBinding (@NonNull ConstraintLayout rootView, @NonNull按钮按钮,   @NonNull TextView潜台词,@NonNull TextView标题){…}      @NonNull   公共静态ActivityAwesomeBinding膨胀(@NonNull LayoutInflater增压泵){/*编辑过:移除了重载方法充气(增压泵,家长,attachToParent)的调用*/视图根=inflater.inflate(出来。activity_awesome, null,假);   返回绑定(根);   }      

视图绑定会生成膨胀方法作为生成一个绑定对象实例的主要方式。在ActivityAwesomeBinding。java中,视图绑定生成了一个只有一个参数的增加方法,该方法通过将父母设定为空值来指定当前视图不会绑定到父视图中,视图绑定也暴露了一个有三个参数的增加方法,来让您在需要的时候传入父母和attachToParent参数。

  

真正神奇的地方是绑定方法的调用。这里会填充视图并绑定所有的属性,同时做一些错误检测并生成清晰的错误提示。

        @NonNull   公共静态ActivityAwesomeBinding绑定(@NonNull视图rootView) {/*编辑:简化代码——真实情况下生成的代码是一个优化过的版本*/按钮按钮=rootView.findViewById (R.id.button);   TextView潜台词=rootView.findViewById (R.id.subtext);   TextView title=rootView.findViewById (R.id.title);   如果(按钮!=零,,潜台词!=零,,标题!=null) {   返回新ActivityAwesomeBinding (ConstraintLayout rootView,按钮,潜台词,标题);   }   把新的NullPointerException(“丢失需要查看[…]”);   }

Android Studio 3.6中使用视图绑定替代findViewById的方法