位置: 编程技术 - 正文

注解式框架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:xml_parser_free()的用法_XML解析器函数
  • 处置控制的子公司有哪些
  • 公司招的兼职员工怎么报个税
  • 出库单可以补吗
  • 库存现金清查主要包括哪些内容
  • 落枕怎么办怎么治疗
  • 固定资产管理系统多少钱
  • thinkphp 插件
  • 国税局发票打印软件下载
  • HTML常用的表单控件有哪些
  • 万能的python
  • 毕业设计基于plc的全自动包装机
  • 详解Yii2 rules 的验证规则
  • 用php制作年历
  • 账面价值账面余额摊余成本
  • 企业合并财务报表论文
  • 税务实名认证是法人还是办税人
  • 个人所得税汇算清缴
  • 红冲作废怎么处理
  • 企业不需要交残保金吗
  • 服务业 费用可以暂估吗?
  • 安全生产费用收取方案
  • 盈利性幼儿园怎么办理
  • 药品进销差价会计科目
  • 应收分保未到期责任准备金是什么科目
  • 公司给员工发福利图片
  • 收到银行回单如何打印
  • 股东入股怎么做分录
  • 事业单位财政直接支付购置固定资产
  • 公司二手车销售
  • 销售退回的会计分录 预计负债
  • 社保账务如何做会计分录
  • 企业软件开发哪家好
  • 员工垫付的钱会计分录
  • 应付职工薪酬为负数什么意思
  • 销项税额是负数怎么做账
  • 福利费专票分录
  • 生活垃圾处理费标准
  • 规划设计费入什么科目
  • 信用担保融资的缺点
  • mysql详细介绍
  • 政府禁用windows8
  • 应用程序发生异常如何解决
  • winxp共享文件
  • mac os固件下载
  • 如何让win8系统变快
  • windows开始按钮点了没用
  • win10右键图片
  • cocos2dx怎么用
  • 纯js代码实现一进一出
  • JavaScript数据类的特点
  • jquery给输入框赋值
  • 由简入繁是成语吗
  • 律师到税务机关调取信息
  • 新办企业税务局注册流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设