- 浏览: 962694 次
- 性别:
- 来自: 魔都
-
文章分类
- 全部博客 (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 1240导读:从事Android开发给我带来的收入甚至远没有达到iPh ... -
Android基础概念
2012-04-14 15:21 950Android操作系统 Android是一个基于Linux ... -
一个帖子掌握android所有控件、ProgressBar 、Android 动画效果、SQLite、四大组件、Android多媒体 [复制链接]
2012-03-29 20:31 1701文章链接:http://www.apkbus. ... -
分享45个android实例源码,很好很强大.收藏吧!!!
2012-03-29 20:23 1086文章链接:http://blog.sina.com.cn/s/ ... -
android开发文章
2012-03-26 13:03 1064推荐momo雨松的一些列android开发文章,其中涉及很多游 ... -
如何选好Android开发书籍和教程[总结]
2012-03-24 23:18 2313本文汇总整理了时下关 ... -
安卓巴士Android开发神贴整理
2012-03-24 23:17 92910个经典的Android开源应用项目 http://www. ... -
Android核心分析28篇,强烈推荐android初学者,android进阶者看看这个系列教程
2012-03-23 09:40 1051文章链接:http://www.apkbus.com/andr ... -
xx项目交互数据流程
2012-03-13 23:49 1020xx项目交互数据流程 UI触发事件,发送广播到业务逻辑处理 ... -
Handler: 主线程如何通知子线程
2012-03-10 00:50 1178Handler: 主线程如何通知子线程 分类: Android ... -
有关Android线程的学习
2012-03-12 11:33 975有关Android线程的学习 20 ... -
安卓巴士精选Android开发教程
2012-03-09 20:55 1206自从我实习以后的一点感受:写得非常棒,对于应届毕业生,正在念书 ... -
android帖子
2012-03-08 19:37 1088一个demo让你掌握Android的各种Service: ht ... -
多线程断点上传下载类
2012-03-04 20:54 1323public class MulThreadDownload ... -
详解Android源码的编译
2012-02-27 21:21 1132详解Android源码的编译 ... -
Intent在Android中的几种用法
2012-02-26 18:34 1142如果是从BroadcastReceiver ... -
获取网络图片工具类
2012-02-26 18:33 1221package com.soarsky.util; impo ... -
你了解Activity多少?
2012-02-20 09:30 924一 Activity的生命周期 ... -
Android高手应该精通哪些内容?
2012-02-16 16:17 906很多Android开发者已经度过了初级、中级,如何成为一个An ... -
70道经典Android题加答案--重要知识点几乎都涉及到了
2012-02-13 14:11 147970道经典Android题加答案--重要知识点几乎都涉及到了 ...
相关推荐
在Android平台上,开发一款文件管理器是相当常见的需求,它能帮助用户查看、操作设备上的文件和目录。本文将深入探讨一个详细的Android文件管理器...同时,源代码的良好结构也有助于开发者培养出编写高质量代码的习惯。
【Android期末考试代码详解】 ...虽然代码质量可能不高,但从中学习和反思,对于提高编程技巧和理解Android系统原理都是非常有益的。在实际开发中,我们应该力求写出高效、可维护和符合最佳实践的代码。
还有,理解并使用MVVM(Model-View-ViewModel)架构模式,可以帮助你写出更清晰、可维护的代码。 最后,Android的性能优化是高级开发者关注的重点。这包括内存优化、绘制优化、电池效率优化等。通过工具如Profiler...
以上最佳实践旨在帮助开发者创建高质量的Android应用。通过遵循这些指导原则,开发者可以编写出更干净、简短且易于测试的代码,从而提升整体的开发效率和应用性能。在提供的"Best-Coding-practices-in-android-...
在Android平台上,手写签名功能是一项常见的需求,尤其在移动应用中...通过理解这些基础知识,我们可以创建出满足需求的高质量签名组件。对于初学者来说,研究这个demo可以帮助他们更好地理解和掌握Android图形编程。
Android学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者Java开发人员,本书都志在全面提高您的Android编程思想和开发实力,使您能够写出高质量的Android代码,相信读完本书后能使您获益匪浅。
它提供了丰富的工具集,包括代码编辑器、调试器和构建工具,使得开发者能够高效地构建高质量的Android应用。 首先,我们来了解开发高仿微信应用的基础知识: 1. **环境配置**:在开始开发之前,你需要安装Android ...
Android学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者Java开发人员,本书都志在全面提高您的Android编程思想和开发实力,使您能够写出高质量的Android代码,相信读完本书后能使您获益匪浅。
它提供了一整套工具,包括代码编辑器、调试器、构建工具等,使得开发者能够高效地创建高质量的Android应用。在这个场景中,我们讨论的是使用Android Studio开发的一个基于Java语言的小游戏——轮船大战。 Java是...
《Android应用开发揭秘》是一本深入探讨Android应用开发的专业书籍,光盘源代码包含了书中讲解的各种实例和...通过阅读和实践这些代码,开发者可以提升自己的技能,解决实际问题,并开发出高质量的Android应用程序。
13. **测试与调试**:应用开发过程中,单元测试、集成测试和调试技巧是必不可少的,以确保代码质量并找出潜在问题。 通过研究这个源代码,开发者可以深入了解Android应用的生命周期管理、UI设计原则、数据存储方式...
单元测试和集成测试确保了代码的质量,而持续集成/持续部署(CI/CD)则保证了代码的快速迭代。 总的来说,基于Android的校园二手交易平台App涉及到Android开发的多个核心领域,包括UI设计、数据库管理、网络通信、...
在Android开发过程中,掌握一些代码小贴士可以显著提高开发效率和代码质量。...通过学习和实践这些小贴士,开发者可以写出高效、稳定且易于维护的Android应用。持续学习新的技术和最佳实践,是提升开发技能的关键。
阿里作为国内知名的互联网企业,有着一套完善的Android开发规范,旨在引导开发者写出高质量、易于维护的代码。以下将详细解析阿里Android开发规范的核心要点。 1. **命名规范** - 类名:使用大驼峰命名法,首字母...
同时,这也有助于开发者形成良好的编程习惯,写出更健壮、易维护的代码。所以,这份"Android高级应用源码-100多个Android实例集合.zip"对于任何想要深入Android开发的工程师来说,都是一个值得珍藏的资源。
通过使用Kotlin的特性,开发者可以在更短的时间内写出更高质量的代码。 综上所述,这本指南为Android开发者提供了一套从入门到实践的Kotlin学习路径,不仅包括基础知识,还有针对Android开发中常见任务的实践技巧和...
SVG(Scalable Vector Graphics)是一种矢量图格式,它能够提供高质量、无损缩放的图像,非常适合用在多种分辨率的Android设备上。Glide是一个流行的Android图片加载库,它以其高效、易用和强大的功能而闻名。本篇将...
8. 最佳实践与性能优化:书中将分享一些Kotlin和Android开发的最佳实践,如代码风格指南、内存管理、性能优化技巧等,以帮助开发者写出高质量的代码。 9. 实战项目:通过一个或多个实战项目的案例分析,将理论知识...
### Android通用代码开发规范 #### 一、应用包名 ...应用名`。...以上就是《Android通用代码开发规范》的主要内容,通过这些规范,我们可以更好地管理和维护Android应用程序的代码,提高开发效率和代码质量。
总结来说,使用Kotlin实现Android登录界面的优势在于代码简洁、可读性高,借助Anko库可以快速构建UI。通过理解Kotlin的基础语法、Anko DSL以及Android UI组件的工作原理,开发者能够轻松地创建出功能完善的登录界面...