ButterKnife的常用方法

本文详细介绍了Android开发中使用ButterKnife框架进行View注入的方法,包括如何导入,何时调用inject方法,以及适用场景。通过在变量声明上添加注解,避免了大量的findViewById操作,提高了代码的可读性和效率。此外,文章还提到了ButterKnife6与ButterKnife8之间的主要区别,帮助开发者理解不同版本的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博客地址: http://blog.youkuaiyun.com/talentclass_ctt/article/details/52003614

今天写这篇文章的灵感是从之前写的 Android开发之用Bmob实现短信验证码功能 来的,记得当时看官方给的demo时,我注意到没有一大堆findViewById()的东西,而是在变量声明的时候加上注解,如:

<span style="font-size:12px;">@InjectView(R.id.tv_title)
TextView tv_title;</span>

感觉这样很方便,就学习一下,以后写项目的时候也好用上。butterknife是一个支持View注入的框架,用到的注解并不是在运行时反射的,而是在编译的时候生成新的class,所以对性能影响不大,可以放心使用。

那怎么用呢?(以下以ButterKnife6为例,现在已经有8了,我会在文章后面介绍一下不同之处。)

一、跟普通框架一样,下载jar包,导入到项目。

二、想在哪个类使用注解,就在那个类使用ButterKnife.inject()方法。

在Activity用,就在onCreate里面加上ButterKnife.inject(this);

在Fragment用,就在onCreateView里面加上ButterKnife.inject(this, view);

在ViewHolder用,就在构造方法里面加上ButterKnife.inject(this, view);

三、哪些地方能用呢?怎么用?

1、在声明变量的时候在前面加上@InjectView("括号里填id");
注意:变量声明的时候不能为private或者static所以一般都写缺省,我故意加上private,结果编译时报错:


2、绑定监听器,如onclick,onItemClick,onItemLongClick,OnItemSelected,OnCheckedChanged等等控件有的都可以;

Android设置监听有一种方式是在xml文件里对应的控件写上 android:onClick="f" ,然后在Activity里面写:

public void f(View view){
	// 处理的代码
}
如果用了butterknife,就可以不用在xml里面写onclick,也不用写什么setXXXListener了,直接在Activity里面写:

// 绑定监听器
@OnClick(控件ID)
public void showToast2(View view){// 可以有一个参数View,也可不写
    // 处理的代码
}
注意:@InjectView,@OnClick(或其他监听器)默认是NONULL,找不到目标视图时会报错,可以在前面加上@Nullable,这样找不到也不会报错。
3、像Fragment、Adapter这种可以有子布局的控件,在使用ButterKnife.inject()时要再传入一个绑定子布局的view,其他跟上面的一样。在ViewHolder中添加了一个有View参数的构造方法,在重写getView()方法时也不用写findViewById而是直接用了。

4、如果需要在界面销毁的时候,把注入的 View 设置为 Null, 可以用 reset()函数;

四、ButterKnife6和ButterKnife8用法的不同。

一开始我还纳闷怎么有的是@InjectView,有的是@BindView,后来才发现前者是6,后者是7或8,版本不一样。但大同小异,一些细节改一下啊就好了:

把@InjectView换成@BindView
把@InjectViews换成@BindViews
把ButterKnife.inject(this)换成ButterKnife.bind(this)
把ButterKnife.reset(this) 换成 ButterKnife.unbind(this);

例子源代码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值