前段时间笔者在苦逼地撸代码~最后发现有些复杂的界面在写了一屏幕的findviewbyid~~~另一堆setOnXXXListener~有没有方便一点的方法让我们简单点不用每次都定义一次。find一次,强转一次,set一次~~

后来笔者在收藏夹里找到同事好久曾经发给我的网址(呵呵,果然是一旦增加了收藏夹就再也不会看了)~~打开发现有个叫做butterknife的东东~

那么接下来我们来看看ButterKnife如何将我们从findviewbyid中挽救出来的。

ButterKnife简单介绍

呵呵,butterknife是一个关于基于注解的框架~~然后就没有然后了

ButterKnife的下载与配置

ButterKnife框架是一个jar包。大家能够到官网上下载也能够到文章末尾的附件中下载。

1.把下载到的jar包放在android项目的libs目录里面

2.然后单击项目---Alt+enter-----》java Compiler-----》Annotation Procession------》勾一下 钩一下
Enable project specific settings

------》Factory
Path ( 钩一下Enable project specific settings )----》add jar--->选择刚放进libs的jar包。

然后ok~~

ButterKnife的使用


首先上一个布局文件。这个布局文件非常easy仅仅有一个button:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mytestproject.MainActivity" > <Button
android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="点我一下"
/> </RelativeLayout>

然后看MainActivity:

package com.example.mytestproject;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick; public class MainActivity extends Activity {
@Bind(R.id.test)
Button testBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
} @OnClick(R.id.test)
public void sayHi(View view) {
testBtn.setText("Hello!");
}
}

最后执行一下程序能够看到button上面的文字从"点我一下"变成了"Hello"

在定义控件的时候仅仅需在所定义的空间上加上@Bind(viewId)就能够啦
然后为控件绑定事件的时候:以onClick事件为例,在方法的上面增加@OnClick(ViewId)就能够了
当中方法名称是随开发人员定义的,里面的參数能够有也能够没有。比方上面代码中的:

 @OnClick(R.id.test)
public void sayHi(View view) {
testBtn.setText("Hello!");
}

能够写成:

 @OnClick(R.id.test)
public void sayHi() {
testBtn.setText("Hello!");
}

依旧能够的。參数写与不写就看实际应用了。

还有定义控件的时候不能定为私有:
private TextView tv;//这样是不能够的

与传统findViewById比較

(本文基于Eclipse)
看上去是比findViewById更简便一些,可是假设在Android
Studio上使用这个框架那才爽~~一键生成控件~~
有兴趣的朋友能够去研究一下~~

最后提醒一句使用的时候别忘记调用一下:

 ButterKnife.bind(this);

否则注解是无法生效的


你还在苦逼地findViewById吗?使用ButterKnife从此轻松定义控件的更多相关文章

  1. 无奈而又苦逼的二分版本号回退法定位新引入的bug!!!

    昨天測试人员和开发者都发现, 某新版本号有严重的bug.  群里已经開始嚷嚷了, 但没有谁知道是谁引入的问题.本来呢, 这个问题不应该是由我去定位, 但主管让我帮定位一下, 毕竟时间太紧急, 必须尽快 ...

  2. 从苦逼到牛逼,详解Linux运维工程师的打怪升级之路

    做运维也快四年多了,就像游戏打怪升级,升级后知识体系和运维体系也相对变化挺大,学习了很多新的知识点. 运维工程师是从一个呆逼进化为苦逼再成长为牛逼的过程,前提在于你要能忍能干能拼,还要具有敏锐的嗅觉感 ...

  3. PHP项目的“苦逼”经历与思考

    PHP项目的"苦逼"经历与思考 PHP零基础.但因为项目人手不够的原因,被安排到一个用户"定制"项目. 该项目是用PHP生成的统计数据报表. 而用户又有新的3个 ...

  4. 搞IT的技术人员为什么会如此苦逼

    http://www.cnblogs.com/springmvc-hibernate/archive/2012/05/10/2493733.html ————————————————————————— ...

  5. 谋哥:App开发者的苦逼不值得怜悯!

    [谋哥每天一干货,第四十篇]        为什么取这个标题呢?因为昨天一些本来“支持”谋哥的人看到谋哥搞收费VIP群,觉得谋哥赚苦逼开发者的钱很不道德,且说谋哥我写的东西都不切实际,全部是一些思想性 ...

  6. 苦逼三流小公司程序员这半年找工作经历(3)——选择offer

    本文按照企业规模.性质.规模,分成三类,点评一下遇到的这些公司.也算是为半年找工作经历的一个总结. 1,三流小公司 公司规模类似于笔者跳槽前所在企业,性质有外商独资.合资,当然大多数都是民营企业,规模 ...

  7. 苦逼IT才能看懂的笑话

    这是苦逼IT才能看懂的笑话1.栈和队列的区别是啥? 吃多了拉就是队列:吃多了吐就是栈 2.世界上最遥远的距离不是生与死,而是你亲手制造的BUG就在你眼前,你却怎么都找不到她... 3.<c++程 ...

  8. 谋哥:App开发人员的苦逼不值得怜悯!!

    [谋哥每天一干货,第四十篇]         为什么取这个标题呢?由于昨天一些本来"支持"谋哥的人看到谋哥搞收费VIP群,认为谋哥赚苦逼开发人员的钱非常不道德,且说谋哥我写的东西都 ...

  9. 漫画 | 到底是什么让IT人如此苦逼???

    写在最后 漫画是有点夸张,不过多少还是有点现实开发过程的影子! 老板很乐观,核心就是三个月上线,至于怎么办那是底下人的事. 产品很无奈,心里盘算着,万万不可在他这一环节耽误了进度,时间这么赶,先出个壳 ...

随机推荐

  1. [Swift通天遁地]三、手势与图表-(4)3DTouch功能在项目中的应用

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  2. 微信小程序的wxml文件和wxss文件在webstrom的支持

    webstrom默认不支持wxml文件和wxss文件,所以要进入设置里面手动添加支持. 对wxml文件的支持: 文件 -> 设置 -> 编辑器 -> 文件类型, 然后选择XML文件, ...

  3. NS2学习笔记(二)

    Tcl语言 变量和变量赋值 set a "Hello World!" #将字符串赋值给变量a puts "NS2 say $a" #输出字符串的内容,其中$a表 ...

  4. ActiveMQ 5.10.0 安装与配置

    先在官网下载activeMQ,我这里是5.10.0. 然后在解压在一个文件夹下即可. 我这里是:D:\apache-activemq-5.10.0-bin 然后进入bin目录:D:\apache-ac ...

  5. brew update失败提示:/System/Library/Frameworks/Ruby.framework/的解决方法

    本文由@ray 出品,转载请注明出处.  文章链接:http://www.cnblogs.com/wolfray/p/8040701.html 想用brew安装wget,但是提示失败,然后想先 bre ...

  6. Listview模板

    每次写listview都要翻以前的代码,好烦.所以记下模板,方便下次的使用. xml文件部分代码: <ListView android:id="@+id/listview" ...

  7. [Windows Server 2008] ASP.net安装方法

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装ASP.n ...

  8. Caffe2:ubuntu修改链接方式ln

    参考:文件和目录命令-文件重定向 ln 使用caffe2,产生了此种情况: from caffe2.python import workspace >>WARNING:root:This ...

  9. linux调试环境时常用的命令 及 常识

    1.查找文件或文件夹 所在的目录 sudo find / -name your_filename 示例: wangju@wangju-HP--G4:~$ sudo find / -name .jenk ...

  10. SQL几种常用的函数

    函数的种类: 算数函数(数值计算的函数) 字符串函数(字符串操作的函数) 日期函数(用来进行日期操作的函数) 转换函数(用来转换数据类型和值的函数) 聚合函数(用来进行数据聚合的函数) 算数函数(+- ...