位置: 编程技术 - 正文

注解式框架ButterKnife的用法及在adapter中使用的优化(框架常用注解)

编辑:rootadmin
注解式框架的使用将会大大简化代码编写量,提升开发效率,主流的注解式框架有Dagger,ButterKnife,AndrodAnnotations。AndrodAnnotations配置麻烦,需要在项目清单里注册生成的子类。反射机制会占用资源内存和耗时。Dagger采用预编译技术,高效,但是对View绑定操作注解不是很方便。 ButterKnife用起来方便,使用简单,这里主要介绍它的使用。 到官网下载jar包,ButterKnife也已经托管到github上, 一.配置: 下载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。

标签: 框架常用注解

本文链接地址:https://www.jiuchutong.com/biancheng/370972.html 转载请保留说明!

上一篇:undefined reference to '__android_log_print'(android studio1.3版本)(undefined reference to pthread)

下一篇:防止反编译所用到的proguard.cfg文件的编写(apk防止反编译)

  • 企业所得税减免的会计分录
  • 什么是增值税一般纳税人
  • 租房抵扣个税计算公式
  • 财务会计和预算会计是两套账吗
  • 发票第二年是否可以作废
  • 房地产企业毛利率计算公式是什么
  • 没有社保的临时工值得干吗
  • 开票地址开错有什么后果
  • 私对公转账可以撤回吗
  • 公司对供应商罚款合法吗
  • 存货计提减值准备是什么原则
  • 法人收到票据用什么抵扣
  • 旅游业差额开票的票据可以累计一季度吗
  • 原材料验收的重要性
  • 一般企业每个月的保洁费用是多少
  • 商业保险可以税前全额扣除吗?
  • 增值税普票销项负数会影响报销吗
  • 重点创业人群
  • 电商刷单的收入怎么做凭证?
  • 外贸企业进项税额
  • 个体户税务申报流程季度0申报
  • 应收票据收到了吗
  • 怎么注销win10系统
  • 收到无偿划拨的股权如何入账
  • 劳务费意思
  • 暂估入库怎么暂估
  • 土地使用权进项税如何抵扣
  • PHP:oci_fetch_object()的用法_Oracle函数
  • php常用设计模式(大总结)
  • php中单引号和双引号
  • 一般纳税人企业所得税多久申报一次
  • 损失函数是什么
  • 常用激活函数及其导数
  • vue路由跳转携带参数怎么接收
  • sftp命令大全
  • 出售子公司股权不丧失控制权
  • 企业注销其他应收款有数,要交税吗?
  • 对公账户分类及区别
  • 分公司可以独立开票吗
  • mysql备份模式
  • 抵扣税款
  • 税款减免怎么做分录
  • 员工过生日公司有福利吗
  • 住宿发票抵税
  • 银行开户的费用计入什么科目
  • 个人账户转公司账户附言写什么
  • 公对公房产过户
  • 超市小票能作为证据用吗
  • 待认证进项税额期末怎么办
  • 进项税大于销项税需要交增值税吗
  • 跨月发票作废怎么做会计分录
  • 企业所得税税负率多少合适
  • windows server 2003 sp3
  • win10预览版绿屏重启解决
  • 电脑xp系统运行速度慢
  • 硬盘安装xp系统安装教程
  • linuxsu命令作用
  • Ubuntu Server 13.10 安装配置图解教程
  • apache安装步骤
  • win7系统如何将插孔设置为ac97前面板
  • 编写一个定时间隔为5ms的子程序
  • win7旗舰版完整版下载
  • win10天气系统怎么弄掉
  • linux 翻译
  • unity 3d教程
  • nodejs assert
  • nodejs不再维护
  • 微信小程序自定义相机
  • jquery fadein 源码
  • shell监控http脚本
  • python t()
  • jQuery插件能输出到控制台
  • Unity3D游戏开发标准教程
  • python5.7汉诺塔
  • 简述javascript
  • 安徽营业执照网上怎么申请
  • 汽车购置税退税需要多长时间
  • 广东政务平台网上办事大厅
  • 查国税发票验证码怎么查
  • 安徽省滁州市税务局地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设