ButterKnife是一个注解类,ButterKnife开源框架以其强大的view绑定和click事件处理功能,大大减少代码量,节省开发时间,提高开发效率,而且ButterKnife在adapter中的使用也方便的处理了adapter中ViewHodler的绑定问题,下面就学习内容做简单记录:
1、Activity中使用ButterKnife注解类替代findviewbyid绑定view
常规绑定view:
Button mBtn=(Button)findViewById(R.id.btn);
使用ButterKnife绑定view:
@InjectView(R.id.item_goods_name)
TextView mGoodsName;
@InjectView(R.id.item_goods_price)
TextView mGoodsPrice;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_goods);
ButterKnife.inject(this);
//初始化组件
initView();
//初始化数据
initData();
}
简单解释:ButterKnife的代替findviewbyid的使用方法,首先要在“setContentView(R.layout.activity_add_goods);”后面添加“ButterKnife.inject(this);”。然后,在定义声明组件的时候使用注解类绑定id,如:“ @InjectView(R.id.item_goods_price)
TextView mGoodsPrice;”
需要注意的是extView mGoodsPrice不能使用private或者static修饰
2、Activity中使用ButterKnife注解类替代setOnclickListener点击事件(同样也可以替代listview的OnItemClick的方法以及CheckBox的OnCheckedChanged事件)
常规监听事件的处理方式:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity);
Button mBtn=(Button)findViewById(R.id.btn);
mBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.frist_goods_image:
//事件处理
break;
default:
break;
}
ButterKnife处理监听事件:
@OnClick(R.id.item_goods_img)
void ImageClick(View view){//view可以省略
//处理点击事件
}
简单解释:
将需要处理点击事件的组件直接绑定在OnClick上,调用对应ImageClick方法处理监听事件,其中view可以省略,同样需要注意ImageClick方法不能被private或者static修饰,个人感觉,如果有多个监听事件,则需要重复多次使用注解,有些繁琐。
拓展:
同样ButterKnife可以使用@OnItemClick替代listview中的setOnItemClickListener监听方法,使用@OnCheckedChanged替代ChekBox中的setOnCheckedChanged监听方法,用法与@OnClick一样
3、Activity中使用ButterKnife中@OnClick可以一次指定多个id,为多个view绑定一个事件处理方法
ButterKnife多view绑定同一个监听事件:
@OnClick({R.id.item_goods_img,R.id.item_goods_name,R.id.item_goods_price})
void mulitOnclick(View view){
Toast.makeText(this,"共同处理方法",Toast.LENGTH_SHORT).show();
}
简单解释:当多个view的处理时间一致是,可以将多个监听事件对应的view的id绑定在一个@OnClick上,方法如上,需要注意的是方法不能被private或者static修饰,view可以省略