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. C#中子类和父类

    在实例化子类的时候,总是先调用父类的无参构造函数

  2. python并发学习总结

    目录 一.理解操作系统 二.任务类型 三.Socket模块 四.一个简单的C/S程序 五.使用阻塞IO实现并发 方案一:阻塞IO+多进程 方案二:阻塞IO+多线程 阻塞IO模型的思考和总结 六.使用非 ...

  3. spring boot快速入门 7: 使用aop处理请求

    样例:登陆拦截(aop简单样例) 第一步:在pom 文件中加入aop依赖 <!-- spring aop --> <dependency> <groupId>org ...

  4. 解析XML:DOM,SAX,PULL

    Android解析XML有三种方式:DOM(document object model).SAX(simple api XML).PULL 1.DOM DOM解析XML文件时,会将XML文件的所有内容 ...

  5. PHP之string之str_word_count()函数使用

    str_word_count (PHP 4 >= 4.3.0, PHP 5, PHP 7) str_word_count - Return information about words use ...

  6. MultipartFile的使用小结

    Multipartfile转File?File转MultipartFile?可千万别转晕了. 题图:from Google 1. MultipartFile类型转File类型 想要将Multipart ...

  7. java外观模式(Facade)

    1.外观模式(Facade [fə'sɑd] n. 正面:表面:外观) 外观模式:可以理解为 中介模式(没错,就是在用户与系统之间,增加了一个类,而这个类就是外观类,所以这个模式就叫外观模式) 如下图 ...

  8. AngularJS 的常用特性(四)

    11.使用 Module(模块) 组织依赖关系 Angular 里面的模板,提供了一种方法,可以用来组织应用中一块功能区域的依赖关系:同时还提供了一种机制,可以自动解析依赖关系(又叫依赖注入),一般来 ...

  9. 定时IIS任务自动停止及解决办法

    ---恢复内容开始--- 操作系统:WinServer2008 R2 IIS版本:IIS7.0 目的:利用IIS挂载服务,定时或循环作业 症状:在网站的Global.asax.cs文件的Applica ...

  10. 【LeetCode题解】530_二分搜索树的最小绝对值差

    目录 [LeetCode题解]530_二分搜索树的最小绝对值差 描述 方法一.中序遍历二分搜索树 思路 Java 代码 Python 代码 [LeetCode题解]530_二分搜索树的最小绝对值差 描 ...