使用ButterKnife完成Adapter

来源:互联网 发布:mac os x86 编辑:程序博客网 时间:2024/06/09 17:25

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的相关操作

2 0
原创粉丝点击