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

 

(本文比较老旧基于Eclipse)

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

 
首先上一个布局文件,这个布局文件很简单只有一个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);
否则注解是无法生效的
 
 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值