ButterKnife注解式框架简介
所谓注解式顾名思义就是利用注解的方式将代码抽象化,每次使用只需要传递key和value值就行了,ButterKnife框架将View定义和点击事件很好的进行了注解式抽象,利用它我们不必使用findViewById和setOnClickListener,极大的简化了我们的代码,ButterKnife还对listView的ViewHolder提供了方便的绑定处理。
ButterKnife的特点
1,方便的处理View绑定和Click事件,结构清晰,代码简洁,提供开发效率;
2,方便处理ListView中ViewHolder的绑定事件;
3,运行时不会影响app效率,使用配置方便;
4,代码思路清晰,可读性强
那么应该如何利用注解式框架开发程序呢,请看下面的实例代码:
首先将jar包复制到程序的libs里面,然后进行配置:
1.勾选Annotation里面的Enable project specific setting
2.勾选Factory Path里面的Enable project specific setting
Add JARs
配置完成后开始写代码:
首先声明view
@InjectView (R.id.tv1)
TextView tv1;
@InjectView(R.id.tv2)
TextView tv2;
给View设置点击监听事件:
@OnClick({R.id.tv1,R.id.tv2})
public void test(View v)
{
if(v.getId()==R.id.tv1)
{
Toast.makeText(this, "你好", 1).show();
}else if(v.getId()==R.id.tv2){
Toast.makeText(this, "你好2", 1).show();
}
}
在onCreate(Bundle savedInstanceState)里面注册
ButterKnife.inject(this);
这样View的点击事件就OK了。
然后就是在listView绑定ViewHolder:
自己写一个Adapter类继承BaseAdapter
定义一个内部类:
class ViewHolder{
@InjectView(R.id.itemTv)
TextView tv;
@InjectView(R.id.itemBt)
Button bt;
public ViewHolder(View v){
ButterKnife.inject(this,v);
}
}
在getView方法里面:
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if(convertView==null)
{
convertView = View.inflate(context, R.layout.item, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.tv.setText(list.get(position));
holder.bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "button", 1).show();
}
});
return convertView;
}
在MainActivity注册绑定自定义的Adapter就可以了:
MyAdapter adapter =newMyAdapter(this,list); listView.setAdapter(adapter);
如果看不懂lz杂乱的写法那么就去移驾极客学院吧,很详细的视频教程。