butter knife
介绍:
Field and method binding for Android views which uses annotation processing to generate boilerplate code for you.大致的作用是利用注解帮助我们自动生成代码。
butter_knife实际就是一个十分完善的安卓注解机制,我们借助这个机制可以省去好多类似findViewById,setOnclickListener的代码,使代码看上去更整洁,节省开发人员的时间。
配置gradle
1 添加dependency:
implementation'com.jakewharton:butterknife:10.1.0'
annotationProcessor'com.jakewharton:butterknife-compiler:10.1.0'
2 添加 plugin 到 buildgradle
官网添加完的buildgradle样式classpath 'com.jakewharton:butterknife-gradle-plugin:10.1.0'
mavenCentral()
google()
3 添加plugin:
apply plugin : 'com.android.library'
apply plugin : 'com.jakewharton.butterknife'
使用
在使用前,我们再添加一个自动生成代码的插件:zelezny
File->settings->Plugins
添加进来以后就可以自动生成代码了。
省略findViewById:
1 在activity 中:现在layout中写好控件和id,然后到对应的Activity中右击鼠标:
(或者alt+insert),鼠标的光标一定要在setContentView中的layout后面
选择Generate ButterKnife inJections
然后BK就会在activity中为我们自动生成各个控件的变量名并且绑定他们。(注意光标一定要放在layout的 id上面,不然是找不到Generate这个选项的)。
2 在fragment中使用:由于fragment和activity的生命周期不同,需要进行解绑操作。实际使用插件操作和activity一样。
不过我们要知道几个东西:BK的bind()会返回一个Unbinder对象,用于解绑操作。activity不需要解绑。
3 在Adapter(viewHolder)中绑定:在Adapter的ViewHolder中使用,将ViewHolder加一个构造方法,在new ViewHolder的时候把view传递进去。使用ButterKnife.bind(this, view)进行绑定。
这样就省去了在getView()中findid操作。无需取消绑定BK。
附上getView()绑定资源:
strings.xml1 绑定String:
2 绑定String_array:
3 绑定color:
绑定事件:
单个事件绑定 多个事件绑定