位置: 编程技术 - 正文

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

  • 保险公司报销修手机
  • 环保设备折旧年限和残值率
  • 固定资产加速折旧税收优惠政策
  • 想开饮品店
  • 营改增后计税依据
  • 押金计入什么费用
  • 三栏式明细分类账的账页格式适用于
  • 多交税款抵税会计分录
  • 事业单位支付方式
  • 库存商品进行非货币资产交换收入怎么确定
  • 收到报废车款要交什么税
  • 计提固定资产减值准备属于什么支出
  • 小规模纳税人如何计算增值税
  • 固定资产处置如何入账
  • 食堂费用计入应付职工薪酬吗
  • 股权转让怎么缴纳个人所得税
  • 怎样根据利润表做资产负债表
  • 企业收到收入会计分录
  • 被替换的账面价值题目
  • php随机生成1到3的数字
  • 鸿蒙怎么装app
  • 外籍人员个人所得税政策2023规定
  • 公司员工培训后的收获和感想
  • 新手最适合用哪一款
  • oracle win10
  • php 强类型
  • 总结一些php中好用的软件
  • 变电所的相关费用是什么
  • 林木业折旧年限
  • 金碟软件如何查看明细账
  • thinkphp update方法
  • PHP magento后台无法登录问题解决方法
  • phpcms rce
  • 财政拨款结转累计结转为负
  • 门窗安装属于土建还是安装?
  • 持续经营利润是什么意思
  • 固定资产清理需要交企业所得税吗
  • 进项大于销项怎么结转增值税
  • 织梦使用教程
  • ibm_db_dbi
  • 资产负债表的编制原理
  • 物业合并利润表怎么填
  • 收款金额比开票金额多怎么处理
  • 企业购买理财产品收益要交税吗
  • sql共享
  • 个人餐饮费发票
  • 商品流通企业税费按征收对象可分为
  • 贸易公司平价销售怎么样
  • 电子银行承兑到期没有兑现怎么办
  • 发货快递费多少钱
  • 营改增后房地产企业增值税如何核算
  • 公司一般户需要纳税吗
  • 民间非盈利组织会计制度核算的基础
  • 原材料的合理损耗计入入账成本吗
  • 仓库费用计入什么科目
  • 民办非企业单位有哪些
  • mysql5.7免安装版
  • 简述操作系统更新设置方法
  • 邻居家的wifi隐藏后如何连接
  • mac截屏后的图片在哪里
  • solaris 查看进程
  • 如何将windows文件复制到ubuntu
  • Win10笔记本如何重装系统
  • mac系统 硬盘
  • mac文件怎么用
  • 超级管理员不能用winhello
  • win7系统谷歌浏览器错误代码a00a0017
  • win10qq经常卡
  • 刚接触 python 如何快速上手?
  • js全局方法
  • sequelize-cli
  • nodejs cgi
  • 全国低保查询系统网站
  • 境外付汇税务备案要多久
  • 陕西新版电子税务局怎么使用
  • 张江税务所地址
  • 税务局绩效工作总结
  • 增值税电子普通发票和普通发票区别
  • 长沙税务注销公示期是多久
  • 漳州市税务局电话多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设