位置: 编程技术 - 正文

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

  • 公司债券和企业债券哪个风险大
  • 公司注册资本认缴
  • 红冲以前年度的费用怎么做账
  • 费用化的研发支出是否可以加计扣除
  • 租入厂房再转租账要怎么做
  • 出口销售收入要交增值税吗
  • 弃置费用的现值p/f
  • 个税是否可以跨区缴纳
  • 资产负债表应付账款怎么算
  • 社会团体财务手册怎么写
  • 租赁房屋到期装修费怎么办?
  • 提供劳务企业所得税纳税义务发生时间
  • 企业接受外部劳务派遣用工支出税前扣除问题
  • 记账凭证包括哪些种类
  • 法人资本个人资本
  • 个人转租房屋需交税吗
  • 外协加工分录
  • 支付股东借款利息怎么交税
  • 不能抵扣的进项发票怎么做分录
  • 服装公司业务范围有哪些
  • 小规模纳税人收入超过500万怎么办
  • 造价咨询公司在哪里备案
  • 购买理财产品是不是非法集资
  • 劳务公司开劳务费发票怎么开,税率是多少
  • 深圳制造业税收
  • 异常增值税扣税凭证
  • 酒店自开农副产品收购发票需要缴税吗
  • 企业购入用于捐赠的物品
  • 公司总经理报销找谁签字
  • Win11 Build 22454.1000 开发者预览版发布(附更新修改已知问题+安装)
  • 笔记本显示器分辨率无法调整怎么办
  • 增值税专用发票有几联?
  • 确认应付职工薪酬是借方还是贷方
  • 主营业务利润率多少合适
  • php异常处理和错误处理
  • 企业一次性取得所得税
  • php手机号隐藏中间四位
  • SQL Server 2008 Express如何开启远程访问
  • 主管盾和制单盾是是转账使用的U盾吗?
  • mongodb添加数据库
  • 银行汇票背书
  • 哪些免征土地使用税
  • 出口产品报关单
  • 捐赠纳税调整额怎么算
  • 跨月的普通发票能作废吗
  • 厂家给经销商的活动方案怎么写
  • 政府补贴收入的账务处理
  • 递延所得税资产和所得税费用的关系
  • 对方开的增值税普票怎么查
  • 退货与销售折让的区别
  • 金税盘服务费可以抵扣增值税进项税额吗
  • 营业账簿如何缴纳税款
  • 实收资本,资本公积,盈余公积
  • mysql高级功能
  • 阿拉伯数字转大写函数
  • windowssystem32oobe找不到指定的路径
  • ubuntu系统怎么更新
  • solaris安装软件
  • 电脑系统信息怎么关闭
  • win7桌面提示7601
  • WIN10系统英文怎么改中文?
  • window10删除自带输入法
  • 粒子冲突
  • html中iframe怎么用
  • javascript基础编程
  • html文字美化
  • node.js操作mssql
  • python crc
  • js扩展名是什么文件
  • android模拟器无法运行
  • 电子发票密码在哪里看
  • 工商局税收
  • 税务局执法不规范整改
  • 纳税申报之后最迟多久交
  • 深圳小微企业税收优惠政策2023
  • 印刷行业费用标准
  • 税务师如何执业
  • 车船税完税证明查询官网
  • 广东电子发票开票软件?
  • 美国汽车进口关税25%
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设