引用形式:

Maven

<dependency>  <groupId>com.jakewharton</groupId>  <artifactId>butterknife</artifactId>  <version>7.0.1</version></dependency>
Gradle
compile 'com.jakewharton:butterknife:7.0.1'

使用方法:

Activity绑定示例

class ExampleActivity extends Activity {  @Bind(R.id.title) TextView title;  @Bind(R.id.subtitle) TextView subtitle;  @Bind(R.id.footer) TextView footer;  @Override public void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.simple_activity);    ButterKnife.bind(this);//绑定Activity    // TODO Use fields...  }}

Non Activity绑定示例

public class FancyFragment extends Fragment {  @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;  }}
View Holder绑定示例
public class MyAdapter extends BaseAdapter {  @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);    }  }}
监听器示例
//监听器也可以自动配置进方法中:@OnClick(R.id.submit)public void submit(View view) {  // TODO submit data to server...}//监听方法的所有参数可以被操作:@OnClick(R.id.submit)public void submit() {  // TODO submit data to server...}//定义一个具体的类型并且它将会自动的被类型转换@OnClick(R.id.submit)public void sayHi(Button button) {  button.setText("Hello!");}//对通用事件操作时在一个单独的绑定中声明多个ID@OnClick({ R.id.door1, R.id.door2, R.id.door3 })public void pickDoor(DoorView door) {  if (door.hasPrizeBehind()) {    Toast.makeText(this, "You win!", LENGTH_SHORT).show();  } else {    Toast.makeText(this, "Try again", LENGTH_SHORT).show();  }}//自定义view可以绑定在他们自己的监听器上并且不需要具体声明一个IDpublic class FancyButton extends Button {  @OnClick  public void onClick() {    // TODO do something!  }}
BINDING RESET

Fragment和Activity相比有不同的生命周期。当在一个Fragment的onCreateView中绑定的时候,需要在onDestoryView中设置Views为null。但是,Butter Knife 有一个 unbind 方法来自动的做这件事。

public class FancyFragment extends Fragment {  @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;  }  @Override public void onDestroyView() {    super.onDestroyView();    ButterKnife.unbind(this);//解除绑定  }}

参考地址:

github:https://github.com/JakeWharton/butterknife

Introduction:http://jakewharton.github.io/butterknife/

示例版本为7.0.0,早前版本使用上有一定差别。

更多相关文章

  1. Android部分控件示例汇总
  2. Android解析Excel文档完整示例
  3. Android裁剪图像实现方法示例
  4. Android手势操作示例(上/下/左/右的判断)
  5. Android ApiDemos示例解析(18):App->Activity->Wallpaper
  6. Android 界面开发---控件事件监听器、按键处理
  7. Android判断当前网络是否可用--示例代码
  8. android Shader类简介_渲染图像示例
  9. Android ApiDemos示例解析(9):App->Activity->Persistent State

随机推荐

  1. Android Sync 同步 源码问题解决方案
  2. Android发送短信,并监听短信发送后是否发
  3. android的Android.mk,Application.mk以及
  4. Android之ViewPager+Fragment实现页面点
  5. Android(安卓)keystore的使用方法
  6. Android 判断屏幕方向一个大坑
  7. Android Toast的几种简单调用方法
  8. listItem.measure(0, 0) 空指针问题
  9. Android 调用系统相机,拍照并返回显示
  10. Android之获取控件的坐标