![](https://img.haomeiwen.com/i5872078/e5b5de601280d2b8.png)
新年好!祝大家新年大吉大利,家庭美满,事业有成。
主要内容:回顾以及巩固ButterKnife
简介
在开发过程中,我们总是需要使用findViewById或者是一些点击事件等等。简单的说ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成(偷懒必备)。由大神JakeWharton开源。Github源码地址
优点
1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2.方便的处理Adapter里的ViewHolder绑定问题
3.运行时不会影响APP效率,使用配置方便
4.代码清晰,可读性强
集成
在根build.gradle中,如下:
dependencies { classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1' }
在主module中加入,如下:
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
重新同步一下就好了。
注意事项
1、Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind
2、Fragment ButterKnife.bind(this, mRootView);
3、属性布局不能用private or static 修饰,否则会报错
4、setContentView()不能通过注解实现。
5、在Fragment生命周期中,onDestoryView也需要Butterknife.unbind(this)
坑
如果你的项目需要使用组件化来构建的话,怎么在library中使用butterknife呢。
需要在需要使用的library module的build.gradle中添加:
apply plugin: 'com.jakewharton.butterknife'
引用的地方正常添加:
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
BUT
在根gradle中需要修改classpath,不能使用最新的,例如我使用的是:
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
在8.2.0之前不能使用的原因是library中的R字段的id值不是final类型的,但是你自己的应用module中确是final类型的。
怎么解决的:
插件的目的是重新创建了一个R文件,改成了final类型。
libeary使用方式改变
在注解中不能使用R.id。。。需要改成R2.id.
例子:
@BindView(R2.id.z_custom_text_view)
TextView zCustomTextView;
@BindView(R2.id.loading)
LinearLayout loading;
不在注解的地方还是需要使用R.id.的。
貌似不能使用swich对比id,需要使用if-else
插件
有时候使用@BindView还是嫌累怎么办,出来了一个快捷的方式,使用Zelezny插件,帮助开发者一键完成所有xml对象的实例引用。
![](https://img.haomeiwen.com/i5872078/662474a0fde1a3a1.png)
鼠标移到需要引用的布局文件上,上图是R.layout.activity_setting.,右键选择generate,选择一个带有butterKnife字符的按键,选择需要实例引用的对象。
安装插件
Setting->Plugins –>搜索Zelezny,点击右侧安装就可以了。
使用总结
参考https://www.jianshu.com/p/2967d0342d80,写的很详细的。
深度讲解
参考https://www.jianshu.com/p/b8b59fb80554,写的很棒。
总结
我们刚开始不能写出很好的轮子,但是我们要去看好的轮子,吸收经验,增长实力,同时分享好的轮子 .今天写的不多,多看看别人的理解,也许会有意想不到的收获。
谢谢阅读
有错误希望能帮忙纠正,谢谢。
作者:william_zhang
![](https://img.haomeiwen.com/i5872078/1a4ecbcbe0977104.jpg)
欢迎关注!
网友评论