ButterKnife的使用

来源:互联网 发布:通信达mac 编辑:程序博客网 时间:2024/05/06 16:25

ButterKnife的简单使用~初学者

  • ButterKnife的简单介绍

ButterKnife是一款懒人开发的必备框架,很多初学者大概还是在通过findViewById()的方式来获得一个控件,而你们造吗,其实这种方式早在ButterKnife诞生的那一天开始就已经OUT了。

  • ButterKnife使用的准备工作

想要使用这么牛逼的一款框架,当然要付出一定的代价了。
首先我们需要在app的build.gradle文件中的dependencies中添加依赖(版本可能不一样)

  compile 'com.jakewharton:butterknife:8.2.1'  apt 'com.jakewharton:butterknife-compiler:8.2.1'

还要在上面的android中添加

  apply plugin: 'com.neenbedankt.android-apt'

这里写图片描述

千万不要以为这就OK了,正所谓万里长征,这才过去一半!
我们还要在我们项目的build.gradle文件的dependencies下添加一丢丢东西的。

    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

这里写图片描述

这下我们的准备活动就完成了,下面我们就可以开始愉快的使用它了!

  • ButterKnife的使用

1、首先,要想在一个Activity中使用ButterKnife。我们要先在这个Activity的OnCreate方法中进行绑定(注册,类似于广播或EventBus使用前的注册)。如图:

这里写图片描述

2、之后,我们才开始使用它。先演示最简单的对控件的获取。以往我们都是对一个控件声明为成员变量,然后在OnCreate方法中通过findViewById的方式来获取控件,然后才能使用,否则的话就会残酷的给我们爆出空指针异常。但是现在,有了这个神器,我们可以直接将一个控件声明为成员变量。然后在这个成员变量的上方引入@BindView(R.id.你想笑获取的控件的id)这个注解。这样的话,我们便可以在整个的Activity的中任意的使用这个控件了。如果没明白那就直接上图了:

这里写图片描述

3、简单吗?快捷吗?满意吗?如果没满意,那就再看看它的一个用法,估计你会对它有那么一丢丢的满意的。对于一个按钮的点击事件,我们之前大多是在XML布局中直接设置OnClick属性指定方法名称,然后在对应的Activity中创建相应的方法。要么就是在Activity中将按钮初始化后,对按钮设置点击事件,通过匿名内部类或是让Activity实现OnClickListener接口。其实很想问你一句,你觉着这样简单吗?在你不知道ButterKnife这个神器之前你肯定会说,还行啊,也没啥别的办法了啊!没错,如果没有ButterKnife,我们确实只能这样。但是,有了它的出现,我们可以直接在Activity中创建一个方法,然后在这个方法的上方添加一个@OnClick(R.id.对应的按钮的id)注解。这样,这个方法就成了对应按钮的点击事件了。是不是简单了不少?还是给你们上图吧。

这里写图片描述

我的图中分别是两个按钮的点击事件,两个按钮实现点击的方式没有区别,只是对应id不同,便可以区别不同的点击事件。这里有两点需要注意的是。第一,点击事件的方法的权限修饰符必须是public。第二,方法内的参数View可传可不传,如果方法中并没有使用到view,其实可以不用写。但是一般的大神都会写,知道为啥吗?因为为了提高他们的自身逼格,以彰显他们写代码谨慎的风格,他们往往会在实现点击事件操作之前进行一下判空处理,判断view为不为空。其实个人觉着然并卵啊。因为如果view为空的话,他根本不会响应这个点击事件了啊!既然能响应,他就肯定不为空啊,你说是不是!哈哈哈!、

4、在我们的项目中,ListView和RecycleView的使用肯定不会少。对于它的每一个item上,想必也会有至少一个以上的控件吧。如果更多呢,难道我们在为这些控件设置内容之前还要在适配器中一个一个的通过findViewById的方式先获取出来,在进行设置内容。当然不用了,我们也可以使用ButterKnife,在适配器的ViewHolder中,我们同样对ButterKnife进行绑定,方式和在Activity中一样。算了,直接上图吧,只要不是弱智肯定能看得懂(弱智也不能干咱们这一行啊!)。

这里写图片描述

接下来怎么用不用我告诉了吧!嗯哼!

-ButterKnife的总结

对于初学者来说,以上这些讲解就足够用了。我这话的额外含义就是其实他还有别的用法,比如,它可以对一些资源id也进行遍历,对于按钮的点击事件,可以一个方法中监听多个按钮的点击。但是,这些不太常用。个人认为为了使代码可读性更好,也没必要使用。感兴趣的朋友可以自己再深入研究。我在这就不多说什么了。毕竟,我昨天刚会的ButterKnife……

1 0
原创粉丝点击