ButterKnife

环境搭建

在project的build.gradle文件中添加依赖的插件

//ButterKnife 的插件
// classpath 'com.jakewharton:butterknife-gradle-plugin:8.8.1'

在app的build.gradle文件中添加依赖,并添加插件

implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

使用

在Activity中

public class MainActivity extends AppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();
//使用@BindView来绑定一个View对象,绑定的对象不能是private或者static修饰的
@BindView(R.id.add_one)
Button addOne;
@BindView(R.id.add_100)
Button add100;
@BindView(R.id.update_100)
Button update100;
@BindView(R.id.update_first)
Button updateFirst;
@BindView(R.id.delete_one)
Button deleteOne;
@BindView(R.id.delete_all)
Button deleteAll;
@BindView(R.id.query)
Button query; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//绑定必须发生在已经设置过layout布局文件之后
ButterKnife.bind(this);
}
//用@OnClick注解标识是Click方法
@OnClick({R.id.add_one, R.id.add_100, R.id.update_100, R.id.update_first, R.id.delete_one, R.id.delete_all, R.id.query})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.add_one:
StudentDaoOpe.insertData(this,new Student(null,"zhangsan","zhangsan@163.com",15));
break;
case R.id.add_100:
add100();
break;
case R.id.update_100:
update100();
break;
case R.id.update_first:
StudentDaoOpe.updateData(this,new Student(null,"zhangsan","zhangsan@163.com",15));
break;
case R.id.delete_one:
StudentDaoOpe.deleteData(this,new Student(null,"zhangsan","zhangsan@163.com",15));
break;
case R.id.delete_all:
StudentDaoOpe.deleteAllData(this);
break;
case R.id.query:
startActivity(new Intent(this,QueryActivity.class));
break;
}
Log.i(TAG, "onViewClicked: "+view.getId() + " finish ");
} private void add100() { } private void update100() { }
}

小点点

  • 在Activity中不需要解绑,但是在Fragment中却需要在onDestroyView中进行解绑
  • 修饰符不允许使用private或者static
  • 在非Activity中,bind的this参数不允许被替换为getActivity
  • 可以绑定颜色,资源等,也可以绑定多个view

事件处理

  • @OnClick 点击事件
  • @OnCheckedChanged 选中和取消选中
  • @OnEditorAction 软键盘的功能键
  • @OnFocusChange 焦点改变
  • @OnItemClick item 条目被点击
  • @OnItemLongClick 长按
  • @OnItemSelected item被选择事件
  • @OnLongClick 长按事件
  • @OnPageChange 页面改变事件
  • @OnTextChanged EditText里面的文本变化事件
  • @OnTouch 触摸事件
  • @Optional

ButterKnife 初体验的更多相关文章

  1. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  2. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  3. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  4. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

  5. 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...

  6. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

  7. 在同一个硬盘上安装多个 Linux 发行版及 Fedora 21 、Fedora 22 初体验

    在同一个硬盘上安装多个 Linux 发行版 以前对多个 Linux 发行版的折腾主要是在虚拟机上完成.我的桌面电脑性能比较强大,玩玩虚拟机没啥问题,但是笔记本电脑就不行了.要在我的笔记本电脑上折腾多个 ...

  8. 百度EChart3初体验

    由于项目需要在首页搞一个订单数量的走势图,经过多方查找,体验,感觉ECharts不错,封装的很细,我们只需要看自己需要那种类型的图表,搞定好自己的json数据就OK.至于说如何体现出来,官网的教程很详 ...

  9. Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验

    Python导出Excel为Lua/Json/Xml实例教程(二):xlrd初体验 相关链接: Python导出Excel为Lua/Json/Xml实例教程(一):初识Python Python导出E ...

随机推荐

  1. CentOS7 安装 Adobe Flash 看网络视频

    登录 Adobe 网站,找到 Adobe Flash Player 下载页,进入后网页自动识别 Linux 环境,手动选择版本,选择 YUM 方式,自动下载一个 rpm 文件 定位到下载目录,通常默认 ...

  2. poj3250 Bad Hair Day 单调栈(递减)

    Bad Hair Day Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 24420   Accepted: 8292 Des ...

  3. Centos7安装python3.7.1并与python2共存

    转自:http://www.cnblogs.com/JahanGu/p/7452527.html参考:https://www.jb51.net/article/104326.htm 1. 备份原来的p ...

  4. IIS7如何实现访问HTTP跳转到HTTPS访问 转的

    加几句,1.安装url重写模块,不需要重启IIS,安装完了就能用.个人感觉比 IIS REWRITE组件更好用,iis rewrite是安装第三方的那种,不缴费只可以把所有规则写在一起,不能区别站点, ...

  5. activity启动模式launchMode区别和优化

    初学android的开发人员,可能会经常忽略这个重要的设置. Activity一共有以下四种launchMode:1.standard2.singleTop3.singleTask4.singleIn ...

  6. Android开发最佳实践

    Android开发最佳实践 摘要 ●使用 Gradle 和它推荐的工程结构 ●把密码和敏感数据放在gradle.properties ●不要自己写 HTTP 客户端,使用Volley或OkHttp库 ...

  7. Hibernate中Query.list()方法报IllegalArgumentException异常

    最近在使用Hibernate开发项目,在写好hql语句,并初始化Query对象,执行Query.list()方法时,应用报IllegalArgumentException异常.经网上查询,现已经基本决 ...

  8. Struts dispatchAction

    在Struts中定义动态Action,不用定义多个Action,可以实现一个action,多个跳转. 在定义时,继承DispatchAction,并定义parameter的名字 在jsp页面选择act ...

  9. [PY3]——IO——pathlib

    pathlib.Path() from pathlib import Path p=Path("/test2") Path.cwd() print(p.cwd()) /py3 Pa ...

  10. 一起来做Chrome Extension《搭个架子》

    CEF - A simple Chrome Extension development falsework CEF是一个简单的Chrome Extension开发脚手架,它有如下功能: 模块化的结构, ...