现在养成了一个好习惯,每当我学习了一个新东西,总想要记录下来。记录的过程其实就是对知识的一次梳理,可以查漏补缺。
而记录下来也是为了方便以后的重温,毕竟人的遗忘曲线还是很恐怖的。

黄油刀-ButterKnife是什么?

ButterKnife是注解框架中相对简单易懂的很不错的开源框架

为什么要学习并使用ButterKnife呢?

1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率
2.方便的处理Adapter里的ViewHolder绑定问题
3.运行时不会影响APP效率,使用配置方便
4.代码清晰,可读性强

开源地址:

https://github.com/JakeWharton/butterknife

使用准备:

1)在Setting->Plugins中输入butterknife添加插件
Android ButterKnife Aelezny ->点击安装

2)在Module里的build.gradle里面添加
compile ‘com.jakewharton:butterknife:7.0.1’

常用功能:

1.省略findViewById()
(1)Activity中使用
**以前:**mTextView = (TextView) findViewById(R.id.butter_text_view);

现在:
@InjectView(R.id.butter_text_view_2)
TextView mTextView2;
在设置好布局之后调用:
ButterKnife.inject(this);当前视图与ButterKnife绑定。

注意:
View变量声明的时候不能为private或者static.

(2)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("在使用黄油刀");
return view;
}
}

(3)Adapter ViewHolder中使用
示例代码:

@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()
以前:

mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});

现在:

@OnClick(R.id.button)
void doSomethings(View view) { //参数可以省略
dothings();
}
.
.
.
ButterKnife.inject(this);//布局文件与黄油刀最终绑定

注意:
1.这里方法仍然不能是private和static, 并且可以有一个参数View,也可不写.
2.ListView的点击@OnItemClick, CheckBox的@OnCheckedChanged也可以实现省略操作

3.可以一次指定多个id,为多个View绑定一个事件处理方法
示例:

@OnClick({R.id.button_1, R.id.button_2, R.id.button_3, R.id.button_4})
void buttonsClicked() {
Toast.makeText(this, "四个按钮同一个效果哈", Toast.LENGTH_SHORT).show();
}

更多相关文章

  1. jsp权限菜单绑定的基本实现
  2. Android绑定银行卡提现怎么做?
  3. 绑定服务后台播放音频的简单示例
  4. 如何为后台工作创建绑定服务(Xamarin)
  5. javascript(六)js事件绑定浏览器兼容解决方案 attachEvent addEve
  6. 使用SWT/JFace与WindowBuilder绑定数据的参考资料

随机推荐

  1. Android Wear Preview- 归档通知(Stacking
  2. android代码片段一
  3. android SSL证书认证、SSL双向认证、http
  4. Android 获取设备唯一UUID
  5. Cordova插件编写流程(Android平台)
  6. android camera系统3A模式及其状态转换(二
  7. 【Android】如何寻找出某个Intent是否可
  8. Clickable URLs in Android TextViews
  9. android imageVIew拖动 && 图片缩放
  10. Android Manifest 用法