- 浏览: 959023 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
导读:相信大家都看过google的源码吧,每次看完我都感叹为什么别人写出的程序看起来就是完美呢?在这里我想拿一段代码来区别高质量和普通间的区别,以探索怎样能写出高可塑性的优秀代码。
listview在android中是一个非常普通的组件,通常我们都是这样用的(如你并非这样,那么恭喜你,你有优秀程序员的潜力-_-):
01
<font face="'Times New Roman'"><font color="#000000">
02
this.setListAdapter(newArrayAdapter<String>(this,
03
android.R.layout.simple_list_item_1,
04
newString[]{"list1","list2","list3"}));
05
06
}
07
@Override
08
protected voidonListItemClick(ListView l, View v, int position, long id) {
09
10
Intent i=new Intent();
11
12
switch (position) {
13
case 0:
14
i.setClass(ListTest.this, List1.class);
15
startActivity(i);
16
break;
17
case 1:
18
i.setClass(ListTest.this, List2.class);
19
startActivity(i);
20
break;
21
case 2:
22
i.setClass(ListTest.this, List3.class);
23
startActivity(i);
24
break;
25
26
default:
27
break;
28
}
29
30
super.onListItemClick(l, v, position,id);
31
}
32
33
</font></font>
这个不必多说,再看实现同样的功能google实现的代码:
1
setListAdapter(new SimpleAdapter(this, getData(), android.R.layout.simple_list_item_1,new String[]{"title"},new
2
int[]{android.R.id.text1}));
3
getListView().setTextFilterEnabled(true);
4
}
这里的adpter填充数据是取自getData()这个方法,如下:
01
02
private List getData(){
03
List<Map>dataList=new ArrayList<Map>();
04
Intentintent=new Intent(Intent.ACTION_MAIN, null);//取得标明为Main的activity
05
intent.addCategory(Intent.CATEGORY_SAMPLE_CODE);
06
PackageManagerpManager=getPackageManager();//获得包名
07
List<ResolveInfo>list=pManager.queryIntentActivities(intent, 0);//装载包路径名
08
09
if (null==list) {
10
return dataList;
11
}
12
int len=list.size();
13
Log.i("len===", String.valueOf(len));
14
15
for (int i = 0; i < len;i++) {
16
ResolveInfoinfo=list.get(i);
17
CharSequencelable=info.loadLabel(pManager);
18
19
if ("com.android.test".equals(info.activityInfo.applicationInfo.packageName)) {
20
addItem(dataList, lable.toString(), myIntent(info.activityInfo.applicationInfo.packageName,
21
info.activityInfo.name)); //myIntet()方法设置intent跳转的类名
22
}
23
}
24
return dataList;
25
}
再看addItem()方法:
01
private void addItem(List<Map> data,Stringname,Intent intent){
02
Map<String,Object> map=new HashMap<String, Object>();
03
map.put("title", name); //将传入的title放入map中以供填充adapter使用
04
map.put("intent", intent);//将传入的intent放入map中以供跳转使用
05
data.add(map);
06
}
07
08
private Intent myIntent(StringcontentPkg,String toPkg){
09
Intenti=new Intent();
10
i.setClassName(contentPkg,toPkg);
11
return i;
12
}
13
14
@Override
15
protected
16
void onListItemClick(ListView l, View v, int position, long id) {
17
Mapmap=(Map) l.getItemAtPosition(position);
18
Intentintent=(Intent) map.get("intent");
19
startActivity(intent);
20
}
在这里,代码量似乎是多了不少,很多一步直接写上的都用方法封装起来,看起来很零碎但却非常独立,可塑性非常强,如:一旦为listview添加新的item的话,只需要重新写一个跳转后的类该代码段会自动识别并实现跳转,无需为adapter重新填充,可以说这段代码无需改动而能实现任何数量的listview的添加,当然你要为此写上跳转的目的类,且这个目的类要标记为.
1
<action android:name="android.intent.action.MAIN"/>
2
<category
3
android:name="android.intent.category.SAMPLE_CODE"/>
这是google源码里涉及到的,我将其中涉及到listview部分简化出来以便大家专注研究严谨精炼的代码是怎么构造出来的,呵呵,源码是个好东西,希望大家多抽时间看看,为便于大家比较优虐,我将上面的两个源码贴出来:
http://www.eoe.cn/uploadfile/2011/1229/20111229103249289.rar
http://www.eoe.cn/uploadfile/2011/1229/20111229103250197.rar
listview在android中是一个非常普通的组件,通常我们都是这样用的(如你并非这样,那么恭喜你,你有优秀程序员的潜力-_-):
01
<font face="'Times New Roman'"><font color="#000000">
02
this.setListAdapter(newArrayAdapter<String>(this,
03
android.R.layout.simple_list_item_1,
04
newString[]{"list1","list2","list3"}));
05
06
}
07
@Override
08
protected voidonListItemClick(ListView l, View v, int position, long id) {
09
10
Intent i=new Intent();
11
12
switch (position) {
13
case 0:
14
i.setClass(ListTest.this, List1.class);
15
startActivity(i);
16
break;
17
case 1:
18
i.setClass(ListTest.this, List2.class);
19
startActivity(i);
20
break;
21
case 2:
22
i.setClass(ListTest.this, List3.class);
23
startActivity(i);
24
break;
25
26
default:
27
break;
28
}
29
30
super.onListItemClick(l, v, position,id);
31
}
32
33
</font></font>
这个不必多说,再看实现同样的功能google实现的代码:
1
setListAdapter(new SimpleAdapter(this, getData(), android.R.layout.simple_list_item_1,new String[]{"title"},new
2
int[]{android.R.id.text1}));
3
getListView().setTextFilterEnabled(true);
4
}
这里的adpter填充数据是取自getData()这个方法,如下:
01
02
private List getData(){
03
List<Map>dataList=new ArrayList<Map>();
04
Intentintent=new Intent(Intent.ACTION_MAIN, null);//取得标明为Main的activity
05
intent.addCategory(Intent.CATEGORY_SAMPLE_CODE);
06
PackageManagerpManager=getPackageManager();//获得包名
07
List<ResolveInfo>list=pManager.queryIntentActivities(intent, 0);//装载包路径名
08
09
if (null==list) {
10
return dataList;
11
}
12
int len=list.size();
13
Log.i("len===", String.valueOf(len));
14
15
for (int i = 0; i < len;i++) {
16
ResolveInfoinfo=list.get(i);
17
CharSequencelable=info.loadLabel(pManager);
18
19
if ("com.android.test".equals(info.activityInfo.applicationInfo.packageName)) {
20
addItem(dataList, lable.toString(), myIntent(info.activityInfo.applicationInfo.packageName,
21
info.activityInfo.name)); //myIntet()方法设置intent跳转的类名
22
}
23
}
24
return dataList;
25
}
再看addItem()方法:
01
private void addItem(List<Map> data,Stringname,Intent intent){
02
Map<String,Object> map=new HashMap<String, Object>();
03
map.put("title", name); //将传入的title放入map中以供填充adapter使用
04
map.put("intent", intent);//将传入的intent放入map中以供跳转使用
05
data.add(map);
06
}
07
08
private Intent myIntent(StringcontentPkg,String toPkg){
09
Intenti=new Intent();
10
i.setClassName(contentPkg,toPkg);
11
return i;
12
}
13
14
@Override
15
protected
16
void onListItemClick(ListView l, View v, int position, long id) {
17
Mapmap=(Map) l.getItemAtPosition(position);
18
Intentintent=(Intent) map.get("intent");
19
startActivity(intent);
20
}
在这里,代码量似乎是多了不少,很多一步直接写上的都用方法封装起来,看起来很零碎但却非常独立,可塑性非常强,如:一旦为listview添加新的item的话,只需要重新写一个跳转后的类该代码段会自动识别并实现跳转,无需为adapter重新填充,可以说这段代码无需改动而能实现任何数量的listview的添加,当然你要为此写上跳转的目的类,且这个目的类要标记为.
1
<action android:name="android.intent.action.MAIN"/>
2
<category
3
android:name="android.intent.category.SAMPLE_CODE"/>
这是google源码里涉及到的,我将其中涉及到listview部分简化出来以便大家专注研究严谨精炼的代码是怎么构造出来的,呵呵,源码是个好东西,希望大家多抽时间看看,为便于大家比较优虐,我将上面的两个源码贴出来:
http://www.eoe.cn/uploadfile/2011/1229/20111229103249289.rar
http://www.eoe.cn/uploadfile/2011/1229/20111229103250197.rar
发表评论
-
怎样成为一名Android开发者
2012-04-14 21:49 1231导读:从事Android开发给我带来的收入甚至远没有达到iPh ... -
Android基础概念
2012-04-14 15:21 939Android操作系统 Android是一个基于Linux ... -
一个帖子掌握android所有控件、ProgressBar 、Android 动画效果、SQLite、四大组件、Android多媒体 [复制链接]
2012-03-29 20:31 1690文章链接:http://www.apkbus. ... -
分享45个android实例源码,很好很强大.收藏吧!!!
2012-03-29 20:23 1081文章链接:http://blog.sina.com.cn/s/ ... -
android开发文章
2012-03-26 13:03 1060推荐momo雨松的一些列android开发文章,其中涉及很多游 ... -
如何选好Android开发书籍和教程[总结]
2012-03-24 23:18 2310本文汇总整理了时下关 ... -
安卓巴士Android开发神贴整理
2012-03-24 23:17 92610个经典的Android开源应用项目 http://www. ... -
Android核心分析28篇,强烈推荐android初学者,android进阶者看看这个系列教程
2012-03-23 09:40 1044文章链接:http://www.apkbus.com/andr ... -
xx项目交互数据流程
2012-03-13 23:49 1014xx项目交互数据流程 UI触发事件,发送广播到业务逻辑处理 ... -
Handler: 主线程如何通知子线程
2012-03-10 00:50 1170Handler: 主线程如何通知子线程 分类: Android ... -
有关Android线程的学习
2012-03-12 11:33 970有关Android线程的学习 20 ... -
安卓巴士精选Android开发教程
2012-03-09 20:55 1198自从我实习以后的一点感受:写得非常棒,对于应届毕业生,正在念书 ... -
android帖子
2012-03-08 19:37 1084一个demo让你掌握Android的各种Service: ht ... -
多线程断点上传下载类
2012-03-04 20:54 1316public class MulThreadDownload ... -
详解Android源码的编译
2012-02-27 21:21 1129详解Android源码的编译 ... -
Intent在Android中的几种用法
2012-02-26 18:34 1139如果是从BroadcastReceiver ... -
获取网络图片工具类
2012-02-26 18:33 1216package com.soarsky.util; impo ... -
你了解Activity多少?
2012-02-20 09:30 920一 Activity的生命周期 ... -
Android高手应该精通哪些内容?
2012-02-16 16:17 897很多Android开发者已经度过了初级、中级,如何成为一个An ... -
70道经典Android题加答案--重要知识点几乎都涉及到了
2012-02-13 14:11 147070道经典Android题加答案--重要知识点几乎都涉及到了 ...
相关推荐
这份资料由知名Android讲师孙更新提供,通过深入浅出的讲解和实际源代码示例,使学习者能够快速上手并提升自己的开发能力。 首先,Android是Google主导的开源移动操作系统,广泛应用于智能手机和平板电脑,其开发...
在Android平台上,开发一款文件管理器是相当常见的需求,它能帮助用户查看、操作设备上的文件和目录。本文将深入探讨一个详细的Android文件管理器...同时,源代码的良好结构也有助于开发者培养出编写高质量代码的习惯。
【Android期末考试代码详解】 ...虽然代码质量可能不高,但从中学习和反思,对于提高编程技巧和理解Android系统原理都是非常有益的。在实际开发中,我们应该力求写出高效、可维护和符合最佳实践的代码。
还有,理解并使用MVVM(Model-View-ViewModel)架构模式,可以帮助你写出更清晰、可维护的代码。 最后,Android的性能优化是高级开发者关注的重点。这包括内存优化、绘制优化、电池效率优化等。通过工具如Profiler...
如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是重要的方之一!然而,Android系统太过于庞,源代码实现复杂,习的技术门槛和时间成本都很高。有...
android开发精要.mobi 《Android开发精要》如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是最重要的方法之一!...从而编写出高质量的Android应用。
以上最佳实践旨在帮助开发者创建高质量的Android应用。通过遵循这些指导原则,开发者可以编写出更干净、简短且易于测试的代码,从而提升整体的开发效率和应用性能。在提供的"Best-Coding-practices-in-android-...
在Android平台上,手写签名功能是一项常见的需求,尤其在移动应用中...通过理解这些基础知识,我们可以创建出满足需求的高质量签名组件。对于初学者来说,研究这个demo可以帮助他们更好地理解和掌握Android图形编程。
Android学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者Java开发人员,本书都志在全面提高您的Android编程思想和开发实力,使您能够写出高质量的Android代码,相信读完本书后能使您获益匪浅。
它提供了丰富的工具集,包括代码编辑器、调试器和构建工具,使得开发者能够高效地构建高质量的Android应用。 首先,我们来了解开发高仿微信应用的基础知识: 1. **环境配置**:在开始开发之前,你需要安装Android ...
Android学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者Java开发人员,本书都志在全面提高您的Android编程思想和开发实力,使您能够写出高质量的Android代码,相信读完本书后能使您获益匪浅。
不过,我们可以根据标题和描述中提到的“打造高质量Android应用:Android开发必知的50个诀窍”这一概念,推断出一些知识点和建议,这些都是在Android开发过程中确保应用质量的关键要素。 Android开发中打造高质量...
《Android应用开发揭秘》是一本深入探讨Android应用开发的专业书籍,光盘源代码包含了书中讲解的各种实例和...通过阅读和实践这些代码,开发者可以提升自己的技能,解决实际问题,并开发出高质量的Android应用程序。
13. **测试与调试**:应用开发过程中,单元测试、集成测试和调试技巧是必不可少的,以确保代码质量并找出潜在问题。 通过研究这个源代码,开发者可以深入了解Android应用的生命周期管理、UI设计原则、数据存储方式...
单元测试和集成测试确保了代码的质量,而持续集成/持续部署(CI/CD)则保证了代码的快速迭代。 总的来说,基于Android的校园二手交易平台App涉及到Android开发的多个核心领域,包括UI设计、数据库管理、网络通信、...
在Android开发过程中,掌握一些代码小贴士可以显著提高开发效率和代码质量。...通过学习和实践这些小贴士,开发者可以写出高效、稳定且易于维护的Android应用。持续学习新的技术和最佳实践,是提升开发技能的关键。
阿里作为国内知名的互联网企业,有着一套完善的Android开发规范,旨在引导开发者写出高质量、易于维护的代码。以下将详细解析阿里Android开发规范的核心要点。 1. **命名规范** - 类名:使用大驼峰命名法,首字母...
简介:《Android开发精要》如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是最重要的方法之一!...从而编写出高质量的Android应用。
同时,这也有助于开发者形成良好的编程习惯,写出更健壮、易维护的代码。所以,这份"Android高级应用源码-100多个Android实例集合.zip"对于任何想要深入Android开发的工程师来说,都是一个值得珍藏的资源。
通过使用Kotlin的特性,开发者可以在更短的时间内写出更高质量的代码。 综上所述,这本指南为Android开发者提供了一套从入门到实践的Kotlin学习路径,不仅包括基础知识,还有针对Android开发中常见任务的实践技巧和...