在Android开发中findViewById和setOnClickListener解脱写法。

在任意的一个类中 @Bind(R.id.et) EditText editText;

@OnClick(R.id.btn)

public void btnClick(){ Toast.makeText(MainActivity.this,editText.getText().toString(),3000).show(); }

@Override protected void

onCreate(Bundle savedInstanceState)

{ super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main); ButterKnife.bind(this); }

这是ButterKnife注解 在Gradle中引用 compile 'com.jakewharton:butterknife:7.0.1'

Eclipse 下载Jar包

在Activity中使用 onCreate中加入这一行 (切记) ButterKnife.bind(this);

ButterKnife通过@Bind 注解传入View ID

@Bind(R.id.et) EditText editText; @Bind(R.id.btn) Button button;

绑定资源到类成员上可以使用@BindBool、@BindColor、@BindDimen、@BindDrawable、@BindInt、@BindString

。使用时对应的注解需要传入对应的id资源,例如@BindString你需要传入R.string.txt的字符串的资源id。

@BindString(R.string.title) String title;

@BindDrawable(R.drawable.graphic) Drawable graphic;

@BindColor(R.color.red) int red;

@BindDimen(R.dimen.spacer) Float spacer; View监听器的绑定,在ButterKnife注解中传入ViewID 监听器将自动配置到方法中

@OnClick(R.id.btn)

public void btnClick(View view){ Toast.makeText(MainActivity.this,editText.getText().toString(),3000).show(); }

ButterKnife不仅支持@OnClick,还支持@OnLongClick,@OnTouch等等,详细参考Javadoc http://jakewharton.github.io/butterknife/javadoc/ 在非Activity中使用 Butter Knife提供了ButterKnife.bind()的几个重载,只要传入根布局,便可以在任何对象中使用注解绑定。 @Bind(R.id.button1) Button button1; @Bind(R.id.button2) Button button2; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fancy_fragment, container, false); ButterKnife.bind(this, view); // TODO Use fields... return view; } 在ListView的Adapter中 @Override public View getView(int position, View view, ViewGroup parent) { ViewHolder holder; if (view != null) { holder = (ViewHolder) view.getTag(); } else { view = inflater.inflate(R.layout.whatever, parent, false); holder = new ViewHolder(view); view.setTag(holder); } holder.name.setText("John Doe"); // etc... return view; } static class ViewHolder { @Bind(R.id.title) TextView name; @Bind(R.id.job_title) TextView jobTitle; public ViewHolder(View view) { ButterKnife.bind(this, view); } } 对于在Fragment中使用ButterKnife需要注意:Fragment与Activity生命周期不同,Fragment比Activity多个解除绑定的步骤 @Override public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this); }

Android ButterKnife注解式开发的更多相关文章

  1. 【转】Eclipse中设置ButterKnife进行注解式开发步骤 -- 不错

    原文网址:http://www.bubuko.com/infodetail-974262.html 最近在进行Android注解式开发的学习,正在尝试用ButterKnife.ButterKnife的 ...

  2. 总结切面编程AOP的注解式开发和XML式开发

    有段日子没有总结东西了,因为最近确实有点忙,一直在忙于hadoop集群的搭建,磕磕碰碰现在勉强算是能呼吸了,因为这都是在自己的PC上,资源确实有点紧张(搭建过程后期奉上),今天难得大家都有空(哈哈哈~ ...

  3. SpringMVC 注解式开发

    SpringMVC的注解式开发是指,处理器是基于注解的类的开发.对于每一个定义的处理器,无需再配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册.即注解替换是配置文件中对于处理器的注册 ...

  4. Spring MVC注解式开发

    MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...

  5. 《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值

    上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值. 一.返回ModelAndView 若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回 ...

  6. 《SpringMVC从入门到放肆》九、SpringMVC注解式开发(简单参数接收)

    上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来.今天我们来学习注解开发的参数接收.处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用.具体 ...

  7. 《SpringMVC从入门到放肆》八、SpringMVC注解式开发(基本配置)

    上一篇我们结束了配置式开发,配置式开发目前在企业中用的并不是很多,大部分企业都在使用注解式开发,所以今天我们就来学习注解式开发.所谓SpringMVC注解式开发是指,处理器是基于注解的类的开发方式.对 ...

  8. 3.2.3 SpringMVC注解式开发

    SpringMVC注解式开发 1. 搭建环境 (1) 后端控制器无需实现接口 , 添加相应注解 Controller类添加注解 @Controller //该注解表将当前类交给spring容器管理 @ ...

  9. Hibernate5笔记9--Hibernate注解式开发

    Hibernate注解式开发: (1)注解式开发的注意点: Hibernate中使用注解,主要是为了替代映射文件,完成“类到表,属性到字段”的映射.  JPA提供了一套功能强大的注解.Hibernat ...

随机推荐

  1. 【读书笔记】【深入理解ES6】#8-迭代器(Iterator)和生成器(Generator)

    循环语句的问题 var colors = ["red", "green", "blue"]; for (var i = 0, len = c ...

  2. 原生js选项卡

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. AVFoundation 框架初探究(三)

    这篇总结什么? 在该系列的上一篇的文章中,我们总结的大致内容如下: 1.视频录制  AVCaptureSession + AVCaptureMovieFileOutput 2.视频录制 AVCaptu ...

  4. JavaScript练习2

    今天做了一些JS数组的练习题 一.往数组中插入一个数字 var attr = [1,2,3,4,5,6]; var c = 7; for(var i=0;i<attr.length;i++) { ...

  5. dotnet core webapi +vue 搭建前后端完全分离web架构

    架构 服务端采用 dotnet core  webapi 前端采用: Vue + router +elementUI+axios 问题 使用前后端完全分离的架构,首先遇到的问题肯定是跨域访问.前后端可 ...

  6. python查询完结篇

    0x00 网上找一个查询网站,然后自己写的一个脚本 0x01 代码送上: import requests import time from bs4 import BeautifulSoup strat ...

  7. cs231n spring 2017 lecture2 Image Classification 听课笔记

    1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体 ...

  8. Codefoces 723A The New Year: Meeting Friends

    A. The New Year: Meeting Friends time limit per test:1 second memory limit per test:256 megabytes in ...

  9. 1.移植3.4内核-分析内核启动过程,重新分区,烧写jffs2文件系统

    1.在上章-移植uboot里.我们来分析下uboot是如何进入到内核的 首先,uboot启动内核是通过bootcmd命令行实现的,在我们之前移植的bootcmd命令行如下所示: bootcmd=nan ...

  10. C++ enum用法小技巧

    enum DeviceDataType :int    {        None = 0,              SourceRGBA32 = 1,               Keying = ...