ButterKnife框架注解框架,采用注解的方式,可以简化你的代码。
ButterKnife在eclipse中的进行配置的具体方法:
工程项目
-> 右键
-> 选择 properties
-> 选中 java Complier
-> 选中 Annotation Processing
-> 勾选 Enable project specific settings (勾选后,其他选项自动被勾选)
-> 选中 Factory Path
-> 勾选 Enable project specific settings
-> 点击 Add JARs
-> 添加 butterknife.jar
配置好了之后还需要将butterknife.jar包导入项目。
在MainActivity中,将在xml文件中定义的Textview与listview注入:
@InjectView (R.id.text) TextView tv;
@InjectView (R.id.list) ListView listview;
并在oncreat()方法中调用ButterKnife.inject(this);
这样就完成了注解。
在Adapter的定义中,也可以使用ButterKnife,简化Holder中的代码:
class Holder{
@InjectView (R.id.tv) TextView textview;
public Holder(View view) {
ButterKnife.inject(this,view);
}
}
getView方法中的调用如下:
@Override
public View getView(int position, View convertview, ViewGroup parent) {
// TODO Auto-generated method stub
Holder holder;
if (convertview == null) {
convertview = layoutInflater.inflate(R.layout.data_list, null);
holder = new Holder(convertview);
convertview.setTag(holder);
}else{
holder = (Holder) convertview.getTag();
}
holder.textview.setText(data.get(position));
return convertview;
}
如果需要对listview中的数据实现事件监听,需要在MainActivity中注册OnItemClickedListener,ButterKnife提供了相应的方法:
@OnItemClick (R.id.list)
public void onDataClick(AdapterView<?> parent, View view, int position,
long idlong){
if(position < data.size()){
switch (position) {
case 0:
gotoActivity(MainActivity.this, FirstActivity.class);
break;
case 1:
gotoActivity(this, SecondActivity.class);
break;
default:
Toast.makeText(this, data.get(position), Toast.LENGTH_SHORT).show();
break;
}
}
}
其中gotoActivity是自己写的一个Activity跳转的函数:
private void gotoActivity(Context context,Class<?> cls){
Intent intent = new Intent();
intent.setClass(context, cls);
startActivity(intent);
}
使用ButterKnife框架基本实现了Adapter的相关操作