工欲善其事必先利其器
下载插件
File -> Settings -> Plugins -> 搜索ButterKnife,找到Android ButterKnife Zeleany进行安装重启
使用插件
选中 activity_main 布局文件,alt+insert 快捷键选择 Generate ButterKnife injections
添加依赖
本文以Butterknife 8.5.1 版本为例:
1.在项目的build.gredle 文件中的dependencies下添加
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
2.在module的build.gredle 文件中添加
apply plugin: 'com.jakewharton.butterknife'
3.在module的build.gredle 文件中的dependencies标签中添加
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
如何使用
1.Activity中使用
//一个控件的绑定
// 注意:button 的修饰类型不能是:private 或者 static
//否则会报错:错误: @BindView fields must not be private or static.
@BindView( R.id.button1 )
public Button button1 ;
//多个控件的绑定
@BindViews({ R.id.button1 , R.id.button2 , R.id.button3 })
public List<Button> buttonList ;
//绑定string 字符串
@BindString( R.string.app_name )
String meg;
//绑定string里面array数组
@BindArray(R.array.city )
String [] citys ;
//
<resources>
<string-array name="city">
<item>厦门市</item>
<item>福州市</item>
<item>泉州市</item>
<item>漳州市</item>
<item>龙岩市</item>
</string-array>
</resources>
//绑定Bitmap 资源
@BindBitmap( R.mipmap.bitmap )
public Bitmap bitmap ;
//绑定一个颜色值
@BindColor( R.color.colorAccent )
int black ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_butterknife);
//绑定activity
ButterKnife.bind( this ) ;
button.setText( "button ");
}
2.fragment中使用
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_butterknife, container, false);
//绑定fragment
ButterKnife.bind( this , view ) ;
button.setText( "button ");
return view ;
}
3.Adapter中使用
static class ViewHolder {
@InjectView(R.id.person_name)
TextView name;
public ViewHolder(View view) {
ButterKnife.inject(this, view);
}
}
4.点击事件
//给 button设置一个点击事件
@OnClick(R.id.button )
public void showToast1(){
Toast.makeText(this, "is a click", Toast.LENGTH_SHORT).show();
}
//给 button 设置一个长按事件
@OnLongClick( R.id.button )
public boolean showToast2(){
Toast.makeText(this, "is a long click", Toast.LENGTH_SHORT).show();
return true ;
}