注解式框架ButterKnife的用法及在adapter中使用的优化
来源:互联网 发布:网络翻墙英语怎么说 编辑:程序博客网 时间:2024/06/15 02:22
注解式框架的使用将会大大简化代码编写量,提升开发效率,主流的注解式框架有Dagger,ButterKnife,AndrodAnnotations。AndrodAnnotations配置麻烦,需要在项目清单里注册生成的子类。反射机制会占用资源内存和耗时。Dagger采用预编译技术,高效,但是对View绑定操作注解不是很方便。
ButterKnife用起来方便,使用简单,这里主要介绍它的使用。 到官网下载jar包,ButterKnife也已经托管到github上,http://jakewharton.github.io/butterknife/
一.配置:
下载jar包放到libs中,配置eclipse,右键项目properties->java Compiler->Annotation Procession->勾一下Enable project special settings其他的就会自动勾上了,Factory path勾上Enable project special settings,Add jars选中刚才导入的jar包,确定即可。
二.使用:
直接上代码
public class MainActivity extends Activity {
@Optional@InjectView(R.id.tv)
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
}
@OnClick(R.id.tv)
public void say(Button btn){
Toast.makeText(this, "你好", Toast.LENGTH_SHORT).show();
btn.setText("ButterKnife");
}
}很简单吧,需要注意的是,如果click事件还有其他的组件,则声明为@OnClick({R.id.tv,R.id.tv2})这种方式即可,在使用case来进行判断,@Optional是以防没有这个id,防止崩溃使用的,其他的事件如长按,选中等也都有相关的方法。
三.对adapter的支持
之前我们自定义的adapter会写成这种形式:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder = null;
if (holder == null) {
convertView = LayoutInflater.from(mcontext).inflate(
R.layout.activity_main, null);
holder = new ViewHolder();
holder.btn = (Button) convertView.findViewById(R.id.tv);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.btn.setText("更改");
return convertView;
}
class ViewHolder {
Button btn;
}----------------------华丽丽的分割线-------------------------------
加入ButterKnife后,adapter只需进行很小的修改即可,代码如下
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder = null;
if (holder == null) {
convertView = LayoutInflater.from(mcontext).inflate(
R.layout.activity_main, null);
holder = new ViewHolder(convertView);
holder.btn = (Button)convertView.findViewById(R.id.tv);
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
}
holder.btn.setText("更改");
return convertView;
}
static class ViewHolder{
@InjectView(R.id.tv)
Button btn;
public ViewHolder(View view){
ButterKnife.inject(view);
}
} ViewHolder声明为了静态的,holder = new ViewHolder中传入了 convertView。以上就是简单的ButterKnife的使用方法
1 0
- 注解式框架ButterKnife的用法及在adapter中使用的优化
- 注解式框架Butterknife的用法
- 注解式框架--Butterknife的使用
- ButterKnife 注解框架的使用
- Butterknife 注解框架在 Android Studio 上的使用
- 38.ButterKnife注解框架的使用
- ButterKnife 8.4 注解框架的使用
- 注解框架ButterKnife的使用方式
- Android注解框架(ButterKnife的简单使用)
- Android Butterknife 注解框架的使用
- Android中的注解式框架之ButterKnife的使用
- android library中使用butterknife的注解
- Android Studio中butterknife注解的使用
- 在AS中,ButterKnife框架的应用
- Android Studio中使用ButterKnife注解框架
- AndroidStudio中使用最新ButterKnife注解框架
- ButterKnife注解框架使用
- butterknife框架的使用
- Android可记住用户密码登陆界面
- Eclipse中出现无法找到Maven包
- Linux下rar 命令压缩和解压详解
- HDU ACM 2178 猜数字
- 开始
- 注解式框架ButterKnife的用法及在adapter中使用的优化
- 防止反编译所用到的proguard.cfg文件的编写
- LINUX PYTHON安装
- Algorithms—136.Single Number
- 前言
- MIB文件简单分析
- Thread线程的中断
- gcc的安装与配置
- 仿微信输入支付密码的弹窗