1.ButterKnife引入
GitHub—>ButterKnife
官方文档–>官方文档
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.0'
compile 'com.jakewharton:butterknife:7.0.1'
}
2.Activity中的使用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//绑定当前的Activity
ButterKnife.bind(this);
}
3.Fragment中的使用
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_blank, container, false);
//绑定Fragment
ButterKnife.bind(this,view);
return view;
}
@Override
public void onDestroyView() {
super.onDestroyView();
//解除绑定
ButterKnife.unbind(this);
}
5.ViewHolder中的使用
class ViewHolder {
@Bind(R.id.tv_text) TextView tv_text;
@Bind(R.id.title) TextView title;
public ViewHolder(View view) {
//绑定
ButterKnife.bind(this, view);
}
}
6..根据id引用各种文件
//根据ID获取一个Button
@Bind(R.id.bt_1)
Button bt1;
//获取一个颜色值
@BindColor(R.color.colorAccent)
int colorAccent;
//获取String中的字符串
@BindString(R.string.app_name)
String appName;
//获取dimens中定义的值
@BindDimen(R.dimen.activity_horizontal_margin)
int dimen;
//获取一张图片
@BindDrawable(R.mipmap.ic_launcher)
Drawable ic_launcher;
//获取一组View
@Bind({R.id.bt_1,R.id.bt_2,R.id.bt_3})
List<View> btList;
7.各种点击事件
//点击事件
@OnClick(R.id.bt_1)
void onClick() {
Toast.makeText(this, "点击" + bt1.getText().toString(), Toast.LENGTH_SHORT).show();
}
//点击事件,参数就是你当前点击的View
//OnLongClick同样支持
@OnClick(R.id.bt_1)
void onClick(TextView textView) {
textView.setText("点击了");
Toast.makeText(this, "点击", Toast.LENGTH_SHORT).show();
}
//长按事件,必须返回一个Boolean值
@OnLongClick(R.id.bt_1)
boolean LongClick(){
Toast.makeText(this, "长按" + bt1.getText().toString(), Toast.LENGTH_SHORT).show();
return true;
}
//ListView的点击事件,不传或者只传int 位置也可以
@OnItemClick(R.id.listView)
void OnItemClick(TextView v,int p) {
Toast.makeText(this, "点击了"+p+"--"+v.getText().toString(), Toast.LENGTH_SHORT).show();
}
6.给一组View执行统一的操作
ButterKnife.apply(btList, new ButterKnife.Action<View>() {
@Override
public void apply(View view, int index) {
//这里来执行统一的操作
}
});