位置: 编程技术 - 正文

注解式框架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防止反编译)

  • 土地增值税暂行条例实施细则 税屋
  • 计量的政府补助是什么
  • 收付转记账凭证图片
  • 自然人独资企业股东承担连带责任
  • 摄影服务的开票项目
  • 服务发票是增值税发票吗
  • 增值税调整收入税额差额怎么写
  • 业务招待费扣除基数的收入包括哪些
  • 电梯合同属于什么合同
  • 物业公司转售电费怎么开票
  • 企业所得税怎么征收
  • 事业单位购入存货分录
  • 一般纳税人汽车修理费可以抵扣吗
  • 增值税发票备注栏怎么填写
  • 免税品销售有增值税吗
  • 预收账款与预付账款均属于负债
  • 营改增对运输业的影响
  • 零余额账户期末怎么结转?
  • 公司注销了帐户钱能办款
  • 购进原材料直接销售应该怎样结转成本呢
  • 普通发票要写增值税吗
  • 1697510024
  • linux进程管理器
  • window10最新20h2
  • 中小企业的界定标准是什么
  • 出口货物做内销处理
  • 加油站的成品油经营许可证过期3个月还能换证吗?
  • 让记事本文件自动删除
  • macbook视频怎么用
  • deepin声音
  • win10商店发生了错误请稍后再试
  • 前端生成pdf文件
  • php的数据结构
  • 以前年度损益调整在利润表中怎么填
  • php接收post数据并查询数据库
  • 公司账户转法人账户
  • 电子发票重开之前的是不是就没用了
  • 自动驾驶感知决策控制
  • 公司注册资金减资要交税吗
  • 个税app重置申报
  • 所得税费用怎样算出来的
  • 用友t3核算管理如何取消记账
  • SQL Server 2016 CTP2.2安装配置方法图文教程
  • sqlserver2019配置
  • sql server 附加
  • 企业哪些收入不需要交税
  • 车辆购置税滞纳金上限
  • 企业管理理费包括哪些
  • 预付卡充值可以退吗
  • 购买苗木怎么做政府会计分录
  • 支付借款利息需要交税吗
  • 一般纳税人企业所得税多久申报一次
  • 个体工商户怎样申请开票
  • mysql8高可用
  • centos7.4
  • 高危补丁该不该修补
  • xp系统为什么不能用了
  • 联想随笔
  • 系统自动设置网络连接
  • windows8怎么设置
  • linux那些事儿
  • win7系统没有光驱盘符
  • python数据结构教程
  • unity3d 碰撞
  • js去除特殊字符
  • Node.js中的全局变量有哪些
  • 如何提取api
  • jQuery ajax 当async为false时解决同步操作失败的问题
  • JavaScript replace(rgExp,fn)正则替换的用法
  • javascript入门书
  • javascript数组的本质
  • js实现ping一个ip地址
  • 四川地方税务局网址是什么
  • 税务局各部门职责
  • 佛山顺德怎么坐地铁到广州
  • 税务文书送达回证模板
  • 保险发票属于什么类型发票
  • 一般纳税人资格查询
  • 新车缴纳车船税减免性质是什么
  • 税控盘开票怎么赋码的教程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设