你还在苦逼地findViewById吗?使用ButterKnife从此轻松定义控件

前段时间笔者在苦逼地撸代码~最后发现有些复杂的界面在写了一屏幕的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);

否则注解是无法生效的

Demo下载

jar包下载

时间: 2024-12-10 21:32:58

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

苦逼的工作内容

1.负责企业EIS系统(企业ERP系统叫法)研发测试,需求整理,系统应用,角色权限分配,跨部门协同测试协调工作等,与研发商.设备供应商沟通部署实施事宜,独立撰写部署实施方案: 2.负责企业蓟县新建园区网络架构部署,数据中心机房部署等事宜(包括园区路由器.交换机.服务器.负载均衡,存储等资源的采购.规划.部署与功能分配,同时包括数据中心机房装修,安防,消防,弱电线路等施工事宜),撰写数据中心机房部署实施方案. 部署方案主要涉及:硬件架构.系统架构.应用软件.存储灾备和IP资源分布等,其中,网络方面

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

PHP项目的"苦逼"经历与思考 PHP零基础.但因为项目人手不够的原因,被安排到一个用户"定制"项目. 该项目是用PHP生成的统计数据报表. 而用户又有新的3个需求,须要在已有的代码基础上完毕.       一.初识PHP 因为本人之前没有接触过PHP代码project,所以须要花费一点时间过一下PHP的基本的语法.个人感觉和C++非常像.有类的定义.继承和派生.但其又比C++简化非常多,没有C++.C的数据类型的概念.全部数据想用什么直接声明赋值就可以.而且.其字

一个苦逼运维的2015结束语——写给过去和未来的自己

> new Date() ISODate("2015-12-31T15:10:26.721Z") 敲下回车才突然反应过来,2015年即将要过去..... 回想12年带个妹子和同寝室的基友一起走出北京站,看着外面灰蒙蒙的天空,激动.迷茫等等复杂情绪的交织让我至今都分不清,当时是以一种怎么样的心情来北漂的.说来好笑,虽然在辽宁上的大学,距离北京也就两三个小时的动车,可就是从没去过北京,对这祖国首都的认识也一直停留在脑海中,从未踏足过这块土地. 也许是缘分,也许是一种初生牛犊的盲目,被

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

[谋哥每天一干货,第四十篇] 为什么取这个标题呢?因为昨天一些本来"支持"谋哥的人看到谋哥搞收费VIP群,觉得谋哥赚苦逼开发者的钱很不道德,且说谋哥我写的东西都不切实际,全部是一些思想性的东西,毫无实战意义,于是愤然离去. 华为老总任正非说:"我们需要将军,更需要战略家.思想家".有App赚钱实战经验的人都会知道,谋哥我写的文章都是基于实战,我不会告诉你具体某个 App怎么搞(除非你加入VIP群,我指导你),我只会说:"你买本<简约至上>看看.

你是厂家?只在某宝上卖货就太苦逼了

(产品要大卖取决于找对路子并选择与胜者为舞!) 电子商务的出现给传统商家带来了巨大的挑战,而随着“互联网+”计划的不断裂变与发展,更是给传统商业带来了前所未有的危机,使得传统商业雪上加霜.商家被迫转行进入电子商务领域后,发现电子商务更不好做,竞争异常激烈,传统电商经过十来年的发展,已趋于饱和,想要赚到钱已经很困难了. 说到做电子商务,商家第一会想到上某猫,可是每年光给平台就要交纳十万的费用,如果是新厂商的话,对不起某猫已经为你关上了大门,现在已经没有入驻可能.上某宝的话如果是小卖家根本连活下去的

让程序员不再苦逼的神器(上)

乘风破浪,启航未来! 做程序猿「媛」是一个苦逼的活,大周六地早起在技术群里招呼,看到没有啥人响应,说了一句,「估计都没有醒」,然后一位哥们抛过来,「在加班」 ! 做 Web 开发更是一个苦逼的活,不像是做 iOS,搞定客户端,基本上就万事大吉了.做 Web 开发不仅仅是要做后端,前端也需要了解和熟悉! 做前后端通吃的 DevOps 全栈工程师绝对是最苦逼的活,不但需要做开发,而且还要了解运维.优化,不会运维的工程师绝对不是一个好架构师! 但所幸的事,一个优秀的工程师尽管很忙,尽管要熟悉前后端.系

分享纯技术创业过程最苦逼的那段历程

园内不少人知道我们依靠OSGi.NET插件框架(iOpenWorks.com)来创业,从2010年创业至今,已有不少年头了.看着我们以前刚创业的照片不禁有感而发,跟大家来分享一下我们创业最苦逼的那段历史. 1 我们的变化 最初,我们就是在这个办公室开始运营的,政府支持的一个不到30平米的房子.公司运营时正式员工4人.这些宝贵的照片拍摄于2010年3月25日,遗憾的是,后面的几位元老当时没有在现场. 看着这些照片,活生生的感觉这完全是励志片啊.我真不知道当时哪来的勇气能在这样的地方成立公司,并且还

研究生的苦逼与安逸

明天打算回家,在回家之前对我已经过去的生活做个总结. 12年考入本985高校的时候,是高调的,自豪的,对这即将的三年学习时间充满了憧憬和向往,QQ空间里面转的全是怎样有效地度过研究生,如何写高质量paper之类的文章,每天的说说动态也是矫情造作的,想引人注目的,自以为很有个性的. 第一学期属于适应期,经历9个月的考研生活后,发现自己越来越沉默了,面对许多话题都不愿意插嘴,不感兴趣.可是又想突出自己,而好像自己又是平凡普通的.在这样的矛盾中缓缓向前.导师在国庆的时候给了我一篇英文paper,要我把

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

[谋哥每天一干货,第四十篇] 为什么取这个标题呢?由于昨天一些本来"支持"谋哥的人看到谋哥搞收费VIP群,认为谋哥赚苦逼开发人员的钱非常不道德,且说谋哥我写的东西都不切实际,所有是一些思想性的东西,毫无实战意义,于是愤然离去. 华为老总任正非说:"我们须要将军,更须要战略家.思想家".有App赚钱实战经验的人都会知道,谋哥我写的文章都是基于实战,我不会告诉你详细某个 App怎么搞(除非你增加VIP群.我指导你),我仅仅会说:"你买本<简约至上>