最初写Android项目的时候,也不知道可以用什么开源项目,就跟着《第一行代码》里面写的一些东西开始第一个界面。大量的XML文件,Activity中调用控件的时候,用的是下面的代码。
1 | View view = findViewById(R.id.item); |
起初也没有感觉这么写有什么不好,虽然有点繁琐,但是将这些初始化的组件,在代码起初申明好变量,然后将所有获取控件的代码放在一个统一的方法中,也就无须管事。后来陆续看别人分享的代码或者开源项目的时候,大多数都使用了Butter Knife这个开源库,它是用注解的方式来完成我们之前的工作,形式如下。
1 | @Bind(R.id.text) TextView textView; |
就一行也许没有看出什么特别优势,但是如果写的控件比较多,这样写的优势还是很明显的,代码量至少节约点,也比较容易读,好像TextView是@Bind(R.id.text)类型一样(这样理解是不是有点问题)。声明完这些控件之后,不要忘记在Activity中的onCreated方法中调用一行代码,否则会出现空指针异常,找不到控件之类的。
1 | @Override |
如果不是在Activity中使用这个,在其他地方使用,如继承RecyclerView.ViewHolder的ViewHolder中,绑定方式有些许区别。
1 | public static class ViewHolder extends RecyclerView.ViewHolder { |
如何在自己的项目中使用ButterKnife开源库,只需要在gradle中配置一行引用依赖
1 | compile 'com.jakewharton:butterknife:7.0.1' |
这个开源库学习起来还是比较简单的,基本上将其官网的东西从头到尾看一遍就好了,如果忘记就再查一下。我这里只是简单的说明了一下Butter Knife的使用方式,关于它的更多信息,可以参考其官网。
============
2016.01.18补记
今天在用ButterKnife的时候遇到一个错误exception java.lang.RuntimeException: Unable to bind views for Fragment on ButterKnife.bind(this, view)。经过查阅发现是控件绑定错误,本来是ImageView
控件,在使用ButterKnife进行绑定的时候使用了Button
。参考Stackoverflow网站