LZ-Says:
想当年,周五了,我们会说:
现在,一到周六,想想还要继续上班,瞬间千万个不爽席卷而来,XXOO此处省略n字。。。 休息一天的好处在于,让你感觉一天休息时间格外珍贵,而坏处在于,劳资TMD还没休息过来,结果第二天又开始上班了,而且一连6天~! 神呐,Help me~!
前言
今天我们一块来聊聊项目常用的findViewById,这个东西可以简单理解为:
初始化控件,实例化控件,方便进行其他操作
一般来说,我们通常这么写:
private void initView() { TextView tvTest = (TextView) findViewById(R.id.id_test); }
上面的例子很简单,只是初始化一个TextView,但是在实际项目中,每个Activity,Fragment或者Adapter中有n个控件,每个控件都需要我们实例化控件,才能对其进行操作,一次次的findViewById,感觉好烦呐~!
有没有好办法呢?当然有很多种方式,但是我们要找适合自己项目的,下面将会为大家依次举例说明~
变迁路 漫漫其修远兮
通过注解方式简化findViewById
在前几年,Xutils比较火爆,火爆的原因有很多,简单列举下,LZ更看好Xutils使用方便,至少为我们封装了很多常用的工具,就好比常用的恶心的图片处理,Xutils有很好的支持,同样,Xutils也支持注解方式去简化findViewById,简单举例如下:
// xUtils的view注解要求必须提供id,以使代码混淆不受影响。
@ViewInject(R.id.id_test) TextView tvTest ;
比较出名的ButterKnife,之前LZ也对此专门学习了下,相关文章地址如下:
http://blog.csdn.net/u012400885/article/details/73729484
同理简单举例如下:
@BindView(R.id.id_test) TextView tvTest;
以上简单为大家列举俩种,至少是LZ用到过的,当让有关支持注解方式的好用的还有很多,欢迎大家交流,一起学习~
个人封装findViewById
刚刚在网上搜索,突然看到有一哥儿们经过其老师启发,个人封装了一个,LZ看到感觉不错,先试试看看好不好用。
简单修改之后,通过测试,感觉还不错,下面为大家附上源码:
那么我们该如何使用呢?简单说下,调用有如下俩种方式:
通过链式调用,你可以直接调用封装好的setText or setImgResource进行直接赋值;
通过链式调用getView获取控件实例,然后进行相应操作即可。
还有一点,大家可自行根据项目进行拓展封装类。
下面为大家附上具体俩种方式调用以及运行结果:
- 方式一 调用方式:
FindView.with(this).setTextContent(R.id.id_test, "Hello").setImageResource(R.id.iv_test,R.mipmap.ic_launcher); 1
运行结果:
TextView textView= FindView.with(this).getView(R.id.id_test); textView.setText("你好");
- 方式二 调用方式:
TextView textView= FindView.with(this).getView(R.id.id_test); textView.setText("你好");
运行结果:
通过泛型来简化findViewById
抽取泛型方法为公共类
谷歌爸爸的DataBinding
而接下来的内容,有兴趣点击原文阅读即可~
暂未找到合适代码块排版,Sorry~