熟悉 GT 库的朋友们有福了,我们一起来看看获取组件的变化

第一版:Android 原生版本

public class MainActivity extends AppCompatActivity {private TextView tv;//定义组件@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = findViewById(R.id.tv);//获取组件tv.setText("恭喜发财");//使用组件}}

定义组件后使用  findViewById 进行组件获取后再使用定义的组件进行使用,几乎每个页面都要写这种获取组件的 findViewById,项目长久写下来还是需要一番流水线般的工作,为了减少这种代码的编写,后面GT库出了类似于 小刀(Butter Knife) 一样获取组件的方法。详情实现请点击下面链接。点击这里https://blog.csdn.net/qq_39799899/article/details/100150702https://blog.csdn.net/qq_39799899/article/details/100150702

第二版:使用GT_View 获取组件

public class MainActivity extends AppCompatActivity {@GT.Annotations.GT_View(R.id.tv)//获取组件private TextView tv;//定义组件@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);GT.build(this);//绑定Activitytv.setText("恭喜发财");//使用组件}}

这种就类似于小刀一样的获取组件,在定义组件、获取组件、使用组件上,多了一个 绑定Activity操作,将所有的获取组件方式都可以定义在 方法之外,且绑定的对象有:Activity、Fragment、DialogFragment、FloatingWindow(GT库独有-悬浮窗页面)、Adapter,等等,只要是页面为Activity或View 均可使用该绑定进行同意获取组件。

第二版:优化版

@GT.Annotations.GT_AnnotationActivity(R.layout.activity_main)//加载布局
public class MainActivity extends GT.GT_Activity.AnnotationActivity {@GT.Annotations.GT_View(R.id.tv)//获取组件private TextView tv;//定义组件@Overrideprotected void initView(Bundle savedInstanceState) {super.initView(savedInstanceState);tv.setText("恭喜发财");//使用组件}
}

如果是继承了GT 库里的 AnnotationActivity、AnnotationFragment、AnnotationDialogFragment、AnnotationFloatingWindow、AnnotationAdapter、那就均可以省去编写 绑定的方法,使用起来颇为方便。接下来博主就要介绍这新出的GT-DataBinding 获取组件的方法了。

第三版:使用GT-DataBinding 获取组件

//指定布局并绑定数据类型为Activity
@GT_DataBinding(setLayout = "activity_main",setBindingType = GT_DataBinding.Activity)
public class MainActivity extends AppCompatActivity {private MainActivityBinding dataBinding;//定义绑定 dataBinding@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dataBinding = GT.DataBindingUtil.setContentView(this);//组件数据绑定//dataBinding = GT.DataBindingUtil.setContentView(this, view);//除Activity外其他的组件绑定//使用组件dataBinding.tv1.setText("你好1");dataBinding.tv2.setText("你好2");dataBinding.tv3.setText("你好3");dataBinding.tv4.setText("你好4");}}

绑定好组件数据后,直接使用绑定对象进行使用组件即可,在第三代获取组件之前如果页面组件有10—20个需要获取的组件,那么在页面代码上,一排长长的获取组件代码将会是一个非常不雅观的场面,在第三代获取组件上就只需要一次绑定组件,该页面所有写有ID的组件均会被初始化好,供你使用,省去了一大批流水线代码。接下来我们来看看第四版获取组件。

第四版:使用 ****(自定义类名)Binding 获取组件

//指定绑定的布局,并设置绑定数据的类型
@GT_DataBinding(setLayout = "activity_main", setBindingType = GT_DataBinding.Activity)
@GT.Annotations.GT_AnnotationActivity(R.layout.activity_main)//加载布局
public class MainActivity extends MainActivityBinding {@Overrideprotected void initView(Bundle savedInstanceState) {super.initView(savedInstanceState);//直接使用组件tv1.setText("恭喜发财1");tv2.setText("恭喜发财2");tv3.setText("恭喜发财3");tv4.setText("恭喜发财4");}
}

看了这一番组件使用,没有接触过 Kotlin语言 的小伙伴是不是很疑惑,定义组件与获取组件都没看见就直接使用了,这样就彻底解放组件获取的代码了,不管你是5个组价获取还是100个组件获取都不用看到一排排头皮发麻的组件获取了。使用步骤也是非常简单:

第一步:指定绑定的布局,并设置绑定数据的类型

@GT_DataBinding(setLayout = "当前布局文件名", setBindingType = 绑定数据的类型)

第二步:继承类名+Binding 的类,并注解加载布局

(注意:很多小伙伴在这里会发现类名+Binding的时候会爆红,那是因为你还没有编译,在编译的时候,继承类名+Binding 的类就会自动生成的)

@GT.Annotations.GT_AnnotationActivity(R.layout.activity_main)//加载布局
public class MainActivity extends MainActivityBinding {

后面就就可以直接使用你布局里所有写有 ID 号的组件了

(注意:需要依赖好GT库后才能这样操作,欢迎使用最新版)

 

在使用GT库里封装的架构当然需要先依赖好GT库:

详细依赖教程请参看

GitHub - 1079374315/GTContribute to 1079374315/GT development by creating an account on GitHub.https://github.com/1079374315/GT

依赖GT库后 就可以像之前获取组件第四版的教程进行使用了。

点个关注点个赞呗(〃'▽'〃),关注博主最新发布库:GitHub - 1079374315/GT

Android——GT-DataBinding(彻底解放 findViewById)相关推荐

  1. Android的DataBinding原理介绍

    Activity在inflate layout时,通过DataBindingUtil来生成绑定,从代码看,是遍历contentView得到View数组对象,然后通过数据绑定library生成对应的Bi ...

  2. Android kotlin DataBinding 之 unresolved reference: BR

    kotlin实现MVVM框架之使用DataBinding之unresolved reference: BR解决办法 由于目前kotlin开发的插件不支持跨module,所以databinding在使用 ...

  3. android -------- MVP+DataBinding 的使用

    今天来说说MVP+DataBinding 的使用 以一个登录案例来讲解 布局:(ConstraintLayout 作为根布局) <layout><data><variab ...

  4. android实现双向绑定,Android使用DataBinding实现双向绑定(一)

    前面一段时间学习了一下Android中的DataBinding,但是只是很简单地实现了一下,DataBinding中最强大的地方还没有认真地学习过,有很多地方还不理解.这次,深入学习一下DataBin ...

  5. 【Android工具】更新解放双眼听书软件,搜书神器

    今天更新小说类工具,听书软件,即不看书,用耳朵听别人给咱们读书. 最近经常开车(就是单纯的字面意思啊,驾驶汽车),开车时候眼睛看路,耳朵基本上闲着.当然不会去听那些FM的广播,和CCAV新闻联播没啥区 ...

  6. 玩转Android之MVVM开发模式实战,炫酷的DataBinding!

    原文:http://blog.csdn.net/u012702547/article/details/52077515 ---------------------------------------- ...

  7. DataBinding快速入门(还在用findViewById?)

    一.DataBinding介绍 了解一门新技术,一般从2W1H入手: 是什么?(What) 有什么用?(What) 怎么用?(How) DataBinding翻译过来就是数据绑定,把数据绑定在控件上. ...

  8. 初步认识android databinding

    我先说一下我公司的情况,然后再说对android databinding的认识 记得去年6月份,我们公司开发的项目(主要是针对餐饮的)走进了市场,遇到了一些问题.客户都说我们产品虽然有一定的好处,但不 ...

  9. Android DataBinding使用总结(五)结合MultiType展示多类型列表

    前言 在我的前几篇文章中,简单学习了以下内容: Android DataBinding使用总结 (一) DataBinding的环境配置和基本使用 Android DataBinding使用总结(二) ...

最新文章

  1. keras 的 example 文件 pretrained_word_embeddings.py 解析
  2. ssh免密连接远程服务器
  3. css控制非固定文本自动换行
  4. php satellite_object_to_string,php object如何转string
  5. Most socially-distanced subsequence CodeForces - 1364B(贪心)
  6. python(11)-if语句,断言assert
  7. 解决exe文件在别人电脑上运行缺失文件情况
  8. Java集合工具类的一些坑,Arrays.asList()、Collection.toArray()...
  9. oracle取日期最大的一条数据_Tableau可视化分析【2】如何连SQL数据查询
  10. git - 基础 - 01 - git reset --hard 回滚以后,看不到之前的分支版本怎么解决:
  11. 交换十六进制的的高低字节
  12. python学习-----------argparse
  13. 【AlphaGo论文学习】Mastering the game of Go without human knowledge翻译及心得
  14. 密码学--CTF Crypto
  15. 淘思精灵-网赚菜鸟的福音
  16. 六、容器(高琪java300集+java从入门到精通笔记)
  17. 2019年6月28日 星期五 今日计划
  18. NPOI导出EXCEL 合并单元格、统计列、单元格样式设置
  19. 智能家居的春天来临 曾经共患难的集成商如今能同享福吗?
  20. 基于RNN的序列化推荐系统总结

热门文章

  1. Java基础:面向对象三大特征、五大原则
  2. ubuntu终端代码上传github最简方法
  3. 为什么字符串可以赋值给字符指针变量
  4. 酒业迷茫期,江小白凭什么获十亿融资?
  5. Sql Server数据库中的用户及权限配置,保障数据库安全
  6. HTML,CSS,JavaScript 分别是什么?
  7. 怎么将PPT转换成一个长图,PPT转长图教程
  8. HTML编写script,script
  9. 山东省高新技术企业培育入库申报材料
  10. 爬取《斗破苍穹》小说全文