厌烦了写findViewById 试试ButterKnife吧
先上官网
http://jakewharton.github.io/butterknife/ 和 https://github.com/JakeWharton/butterknife
配置开发环境
在代码开始之前 先要将库加入依赖
Eclipse
去官网手工下载 jar 包, 放到 libs目录 或者其他方式加入到 Build Path当中
Android Studio
GUI 操作的方式
菜单上 File -> Project Structure (或者直接点工具栏上的Project Structure) -> 左侧 Modules下的 app -> 右侧 Dependencies 标签页 -> +号 -> Library dependency 搜索 butterknife 选择 com.jakewharton:butterknife:8.4.0 然后 OK, 版本号会变 , 反正选择没有 -compiler 这种带尾巴的。
新的butterknife 增加了 annotationProcessor 这种方式无法添加, 所以最终还是要编辑 Gradle Script
编辑 Gradle Script的方式
打开 Module app的 build.gradle , 在dependencies 添加两行
dependencies {
...
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
...
}
省略号代表其他已有的 dependencies 。 添加之后 sync
启动ButterKnife
开发环境配好后, 编码开始
在 Activity中使用, 首先要启动butterknife , 在 onCreate里 setContentView 之后立即 ButterKnife.bind(this);
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}
绑定View
是用@BindView 替代findViewById
public class MainActivity extends AppCompatActivity { @BindView(R.id.btnGet)
Button mBtnGet; @BindView(R.id.tvResult)
TextView mTvResult; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this); mBtnGet.setText("do get"); }
}
注意: 注解只能用在类成员上, 成员不能用 private 或 static 修饰, 不能用在方法中的局部变量上
绑定 资源
@BindString(R.string.app_name)
String appName; @BindColor(R.color.colorPrimary)
int colorPrimary; @BindBool(R.bool.bool_name)
boolean boolName;
还支持更多类型,就不一一列举类
绑定 click 事件
不用声明 view 也不用setOnClickListener , 参数是可有可无的, 如果不使用,不写省事
@OnClick(R.id.btnPost) void doPost() {
mTvResult.setText("do post done");
}
当然也可以像 onClickListener 一样带上参数
@OnClick(R.id.btnPost) void doPost(View view) {
Button btnPost = (Button)view;
mTvResult.setText("do post done " + btnPost.getText().toString());
}
还可以把强转都省了,直接在参数上使用要转的确切类型butterknife能帮你自动转型
@OnClick(R.id.btnPost) void doPost(Button btnPost) {
mTvResult.setText("do post done " + btnPost.getText().toString());
}
发
厌烦了写findViewById 试试ButterKnife吧的更多相关文章
- react动画难写?试试react版transformjs
简介 transformjs在非react领域用得风生水起,那么react技术栈的同学能用上吗?答案是可以的.junexie童鞋已经造了个react版本. 动画实现方式 传统 web 动画的两种方式: ...
- Android Studio插件之快速findViewById(butterknife和Android CodeGenerator的使用)
首先在设置里面的Plugins里面下载安装插件: 安装之后会提示重启, 然后就是怎么使用了: butterknife的使用: 首先在build.gradle(app)里面添加这句话: compile ...
- ButterKnife基本使用
ButterKnife基本使用 Butter Knife处理字段和方法绑定. 重要更新: 目前(2016.4.29), ButterKnife的最新版本是8.0.1. Demo项目已更新: htt ...
- 【转】ButterKnife基本使用--不错
原文网址:http://www.cnblogs.com/mengdd/archive/2015/06/23/4595973.html Butter Knife处理字段和方法绑定. 配置: 用gradl ...
- AndroidStudio使用偷懒插件Butterknife和GsonFormat
1.Android ButterKnife Zelezny Android Studio上安装插件,如图: 配合ButterKnife实现注解,从此不用写findViewById,想着就爽啊.在Act ...
- 使用编译时注解简单实现类似 ButterKnife 的效果
这篇文章是学习鸿洋前辈的 Android 如何编写基于编译时注解的项目 的笔记,用于记录我的学习收获. 读完本文你将了解: 什么是编译时注解 APT 编译时注解如何使用与编写 举个例子 思路 创建注解 ...
- [旧][Android] ButterKnife 浅析
备注 原发表于2016.05.08,资料已过时,仅作备份,谨慎参考 前言 自上星期写 Retrofit 写吐之后 ... 我问大队长能不能换个其他什么东西写,大队长就说了个单词 ButterKnife ...
- 开个坑, 写个阿里云开放储存服务(OSS)的C++版SDK以及客户端
这应该是继我研究手册QQ协议后的第2个稍微正式一点的网络程序, 不只是Scoket套接字编程, 还涉及到更多的HTTP协议知识! 阿里云开放储存服务OSS官方已经提供了不少SDK, 包括PHP/Pyt ...
- 通过泛型来简化findViewById
我们一般写findViewById都要加个强制转换,感觉很麻烦,现在你可以在你的BaseActivity中写入如下方法: @SuppressWarnings(“unchecked”) public f ...
随机推荐
- [HNOI2004]宠物收养场 BZOJ1208 splay tree
题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...
- 分割字符串(C++)
方案1: 利用"IO流"的概念,即C++中的stream,我们都用过C++中std::iostream中的std::istream与std::ostream 如果你接触过网络编程( ...
- Kibana问题搜集---下载源码,执行npm install 报错
npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! chromedriver@2.34.0 install: `node install.js`npm E ...
- 用异或运算交换两个整数实现swap函数功能
对于异或运算有这如下说明: 1^1=0 0^0=0 1^0=1 0^1=1 简单理解就是当两个书相同时结果为0,而两个数不同时异或的结果为1 可用于两个整数的交换,而不用去引入一个中间变量 #incl ...
- P2913 [USACO08OCT]车轮旋转Wheel Rotation
传送门 初始状态是 0,如果有 1 的连接,0 就变 1,如果还有 1 的连接,1 就变 0,如果是 0 的连接就不变 所以就是把答案异或上所有连接,不用考虑顺序,反正最终是一样的 #include& ...
- eclipse+pydev 安装和配置过程
安装 PyDev 在安装 PyDev 之前,要保证您已经安装了 Java 1.4 或更高版本.Eclipse 以及 Python.接下来,开始安装 PyDev 插件. 启动 Eclipse,利用 Ec ...
- CSS background 属性全家桶
介绍我们都知道css的background属性是一个复合属性,可以简写成一行代码,也可以将每个属性分开来写. background 简写属性在一个声明中设置所有的背景属性.如:body{ backgr ...
- oracle数据库的备份与还原
转自:https://www.cnblogs.com/ylldbk/p/5613365.html 数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daoc ...
- CAD安装失败怎样卸载CAD 2018?错误提示某些产品无法安装
AUTODESK系列软件着实令人头疼,安装失败之后不能完全卸载!!!(比如maya,cad,3dsmax等).有时手动删除注册表重装之后还是会出现各种问题,每个版本的C++Runtime和.NET f ...
- 读<<programming ruby>> 7.6节 flip-flop 理解
书中源码是这样的 File.foreach('1.txt') do |x| if(($. == 1) || x =~ /eig/) .. (($. == 3) || x =~ /nin/) then ...