ButterKnife基本使用
ButterKnife基本使用
- @InjectView -> @BindView
- @InjectViews -> @BindViews
- ButterKnife.inject(this) -> ButterKnife.bind(this)
- ButterKnife.reset(this) ->
- private Unbinder unbinder;
- unbinder = ButterKnife.bind(this, view);
- @Override
- public void onDestroyView() {
- unbinder.unbind();
- super.onDestroyView();
- }
配置:
- compile 'com.jakewharton:butterknife:6.1.0'
功能1: 再也不用写findViewById()啦.
- mTextView1 = (TextView) findViewById(R.id.butter_text_view_1);
- @InjectView(R.id.butter_text_view_2)
- TextView mTextView2;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.demo_butter_knife);
- //using butter knife
- ButterKnife.inject(this);
- }
ButterKnife in Fragment
- public class SimpleFragment extends Fragment {
- @InjectView(R.id.fragment_text_view)
- TextView mTextView;
- public SimpleFragment() {
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_simple, container, false);
- ButterKnife.inject(this, view);
- mTextView.setText("TextView in Fragment are found!");
- return view;
- }
- }
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- ViewHolder holder;
- if (convertView == null) {
- convertView = mInflater.inflate(R.layout.person_item_layout, null);
- holder = new ViewHolder(convertView);
- convertView.setTag(holder);
- } else {
- holder = (ViewHolder) convertView.getTag();
- }
- Person person = getItem(position);
- if (null != person) {
- holder.name.setText(person.getName());
- holder.age.setText(String.valueOf(person.getAge()));
- holder.location.setText(person.getLocation());
- holder.work.setText(person.getWork());
- }
- return convertView;
- }
- static class ViewHolder {
- @InjectView(R.id.person_name)
- TextView name;
- @InjectView(R.id.person_age)
- TextView age;
- @InjectView(R.id.person_location)
- TextView location;
- @InjectView(R.id.person_work)
- TextView work;
- public ViewHolder(View view) {
- ButterKnife.inject(this, view);
- }
- }
功能2: 再也不用写setOnClickListener()啦.
- finishButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
- @OnClick(R.id.basic_finish_a_button)
- void finishA(View view) {
- finish();
- }
- //you can bind listener to multiple views
- @OnClick({R.id.button_enable, R.id.button_disable, R.id.button_alpha_0, R.id.button_alpha_1})
- void editViewsClicked() {
- Toast.makeText(this, "You click the Button!", Toast.LENGTH_SHORT).show();
- }
功能3: 组建View List: 把多个View放在一起用
- @InjectViews({R.id.label_first_name, R.id.label_middle_name, R.id.label_last_name})
- List<TextView> labelViews;
- @InjectViews({R.id.first_name, R.id.middle_name, R.id.last_name})
- List<EditText> nameViews;
- public static <T extends View> void apply(List<T> list, Action<? super T> action)
- public static <T extends View, V> void apply(List<T> list, Setter<? super T, V> setter, V value)
- public static <T extends View, V> void apply(List<T> list, Property<? super T, V> setter, V value)
其他实用方法
1.注入重置(Injection Rest):
2.选择性注入(Optional Injection):
3.多方法的listener(Multi-method Listeners):
- mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
- @OnItemSelected(R.id.my_spinner)
- //default callback : ITEM_SELECTED
- void onItemSelected(int position) {
- Toast.makeText(this, "position: " + position, Toast.LENGTH_SHORT).show();
- }
- @OnItemSelected(value = R.id.my_spinner, callback = OnItemSelected.Callback.NOTHING_SELECTED)
- void onNothingSelected() {
- Toast.makeText(this, "Nothing", Toast.LENGTH_SHORT).show();
- }
4.findById()方法
Resources:
ButterKnife基本使用的更多相关文章
- Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架
前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...
- Android Butterknife 8.4.0 使用方法总结
转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6016341.html 本文出自[赵彦军的博客] 前言 ButterKnife 简介 ButterKnife是 ...
- Android开发学习之路-使用annotationProcessor配置Butterknife
Apt工具的作者宣布了不再维护该工具了,而且Android Studio也有了自己的插件,并且可以通过gradle来简单的配置. 其实用Butterknife的都知道,没有apt,onClick绑定不 ...
- Android ButterKnife配置使用
ButterKnife在GitHub的地址:https://github.com/JakeWharton/butterknife 最新的版本是:8.4.0 app 模块的build.gradle: a ...
- Android注解使用之ButterKnife 8.0注解使用介绍
前言: App项目开发大部分时候还是以UI页面为主,这时我们需要调用大量的findViewById以及setOnClickListener等代码,控件的少的时候我们还能接受,控件多起来有时候就会有一种 ...
- ButterKnife Zelezny从配置到使用
插件介绍:ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成.又一神器,完美告别 ...
- Android Studio插件之快速findViewById(butterknife和Android CodeGenerator的使用)
首先在设置里面的Plugins里面下载安装插件: 安装之后会提示重启, 然后就是怎么使用了: butterknife的使用: 首先在build.gradle(app)里面添加这句话: compile ...
- 使用Android Butterknife
我之前浏览过android butterknife 的使用 在android studio 中,很惊喜,已经成为一个插件来使用 这个android butterknife 最大的用处,就是直接生成la ...
- 手把手教android studio中安装Android Butterknife Zelezny (转)
原文地址:http://blog.csdn.net/xin917480852/article/details/51176524 用来快速生成findViewById() 安装方法: 打开Android ...
随机推荐
- OpenCASCADE Root-Finding Algorithm
OpenCASCADE Root-Finding Algorithm eryar@163.com Abstract. A root-finding algorithm is a numerical m ...
- Makefile
原文链接:http://www.orlion.ga/816/ 一.基本规则 对于一个拥有多个文件的c项目,编译时可能是这样的指令: gcc main.c stack.c -o main 如果编译之后又 ...
- JavaScript 中的类方法,对象方法,Prototype方法
<script type="text/javascript"> function baseClass() { this.showMsg = function() { a ...
- 准备 LVM Volume Provider - 每天5分钟玩转 OpenStack(49)
Cinder 真正负责 Volume 管理的组件是 volume provider. Cinder 支持多种 volume provider,LVM 是默认的 volume provider.Devs ...
- 关于SubSonic3.0插件使用SqlQuery或Select查询时产生的System.NullReferenceException异常修复
早上在编写执行用例时,突然爆异常System.NullReferenceException: 未将对象引用设置到对象的实例 执行代码:
- HTML中哪些标签的值会被提交到服务器呢?
<form> <input name="">标签 <select name="">标签 <textarea name= ...
- 【经验之谈】Windows环境下配置WordPress
前言 wordpress全球著名的开放博客平台,拥有成千上万个各式插件和不计其数的主题模板样式,使用php和mysql搭建,下面说下载windows环境下配置wordpress,经验之谈. 安装 关于 ...
- 【HBase】HBase Getting Started(HBase 入门指南)
入门指南 1. 简介 Quickstart 会让你启动和运行一个单节点单机HBase. 2. 快速启动 – 单点HBase 这部分描述单节点单机HBase的配置.一个单例拥有所有的HBase守护线程- ...
- c/c++系列的运算符优先级总结
经常写程序的时候,遇到运算符优先级的问题,令我汗颜的是,查书的次数挺多的……狠狠心,总结下.不过还要结合大量的编程实践来深入脑海. 1.首先永远忘不了的是,逗号运算符级别最低,毫无争议的还有()括起来 ...
- 用MVC做支付宝手机网页支付问题
支付宝支付接口手机网页支付 从官网扒下来的demo阿里做得还是相当不错的,只要参数改正确了基本上都是能跑通,WebForm的没什么大问题,这次要讲的主要是几个要注意的问题,因为是用MVC来做. 1.要 ...