Butter Knife(黄油刀)的基本使用

原创 2017年05月23日 14:23:23

出自:github,jake大神。附录上github地址 https://github.com/JakeWharton/butterknife

用途的话:绑定视图控件而作用的。

使用准备:

使用android studio

添加依赖,File->Project Structure->Dependencies->Library dependency 搜索butterknife即可

  使用Eclipse

添加jar包,网上都有

注意:1 使用as的可以使用插件,在AndroidStudio->File->Settings->Plugins->搜索Zelezny ,可以自动生成你需要的view对象,方便快捷。使用时,在要导入注解的Activity 或 Fragment 或 ViewHolder的layout资源代码上,右键——>Generate——Generate utterKnife Injections

2 使用ec的需要配置下,不然不会生效,设置方法,请看——>点击打开链接

基本使用

1 绑定view

class ExampleActivity extends Activity {
  @BindView(R.id.title) TextView title;
  @BindView(R.id.subtitle) TextView subtitle;
  @BindView(R.id.footer) TextView footer;

  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.bind(this);
    // TODO Use fields...
  }
}

2 绑定资源文件

class ExampleActivity extends Activity {
  @BindString(R.string.title) String title;
  @BindDrawable(R.drawable.graphic) Drawable graphic;
  @BindColor(R.color.red) int red; // int or ColorStateList field
  @BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field
  // ...
}
3 fragment使用

public class FancyFragment extends Fragment {
  @BindView(R.id.button1) Button button1;
  @BindView(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;
  }
}
4 适配器中使用

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 {
    @BindView(R.id.title) TextView name;
    @BindView(R.id.job_title) TextView jobTitle;

    public ViewHolder(View view) {
      ButterKnife.bind(this, view);
    }
  }
}
5 将多个view放进list或数组中

@BindViews({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;
ButterKnife.apply(nameViews, DISABLE);
ButterKnife.apply(nameViews, ENABLED, false);
6 监听事件的绑定,比如这里button的onclick属性,参数可写可不写。也可以限制泛型。

<Button 
android:id="@+id/btn1"
android:layout_marginTop="10px"
android:layout_width="match_parent"
android:layout_height="70px"
android:background="#0F0"
android:onClick="submit"
/>
@OnClick(R.id.btn1)
void submit(){
	//...
}
@OnClick(R.id.submit)
void submit(View view) {
  // TODO submit data to server...
}
7 事件监听,限制泛型

@OnClick(R.id.submit)
public void sayHi(Button button) {
  button.setText("Hello!");
}
8 解绑(一般fragment中用)

  @Override public void onDestroyView() {
    super.onDestroyView();
    unbinder.unbind();
  }
9 如listview的onItemClick方法

  	//原来监听方法,有啥写啥
	@OnItemClick(R.id.listview)
	void onItemClick(AdapterView<?> parent, View view,
			int position, long id) {
			//...
	}
开始对9不是很理解,不知道是写原先回调方法的重载都行,后来发现是写一样的,就是相当于把override下面的方法写下就行。其他也是一样,有多个override就写多个bind

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				
			}
这里注意下,因为不少view是继承textView的,所以如果响应时间没写限制,或者写了高级的类名,可能会同事响应多个view。比如,button 是textview的子类,放写的是textview的类别,可能点击button也会生效

@OnClick({R.id.tv1,R.id.tv2,R.id.btn2,R.id.cb1,R.id.cb2})
void OnClick(TextView view){

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

一把好用的黄油刀——Butter Knife

一把好用的黄油刀——Butter Knife下载JAR包之后需要进行简单的Eclipse配置 Introduction(官方简介,稍后译)Annotate fields with @BindVi...
  • Bizzbee
  • Bizzbee
  • 2016年08月21日 18:25
  • 143

Annotation 注解原理 @Butter Knife黄油刀进阶

jdk1.5新特性 注释是给程序员看的,注解是给虚拟机看的 用框架的时候直接用 元注解:5个 注解的注解 @ Retention @ Inherited @Target @ Documen...

Butter Knife简单使用教程

1.Activity中使用例子class ExampleActivity extends Activity { @Bind(R.id.title) TextView title; @Bind(...

Butter Knife的配置和使用

butterknife which uses annotation processing to generate boilerplate code for you. Jar包下载。   一、...

使用Butter Knife

关于Butter Knife这个插件我第一次见到还是在上个月公司同事写的一部分代码中,第一次见到它后,内心直呼:这尼玛是什么鬼。但新手也没在怕的,不会就马上去百度了,原来这是用在我们初始化绑定控件的时...

Butter Knife 7.0.1 使用方法

Butter Knife , Android 视图中field和方法的绑定 带有“@Bind(R.id.xxx)” Butter Knife注解的域(或者叫字段),Butter Knife 会自动在...

Butter Knife 配置及使用入门详解

Butter Knife 配置及使用入门详解简介 Butter Knife 是一个工具, 可以通过注解(Annotation)的形式绑定Android中的各种资源, 例如: 控件, string,...

Butter Knife 8.8.1的安装和使用

Butter Knife 8.8.1的安装和使用

Butter Knife 配置和使用及插件

目前最新的版本是8.4.0的 官网:http://jakewharton.github.io/butterknife/ GitHub:https://github.com/JakeWharton/bu...
  • yechaoa
  • yechaoa
  • 2016年10月29日 10:36
  • 388

android studio上使用butter Knife

android studio上使用butter Knife本文介绍butterKnife的基本使用[TOP] 在android studio 中如何使用gradle引入 butter knife的基本...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Butter Knife(黄油刀)的基本使用
举报原因:
原因补充:

(最多只允许输入30个字)