`
lvwenwen
  • 浏览: 931197 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

Android 写出高质量的代码

阅读更多
导读:相信大家都看过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
分享到:
评论

相关推荐

    Android开发精要.pdf

    如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是最重要的方法之一!然而,Android系统太过于庞大,源代码实现...从而编写出高质量的Android应用。

    android开发精要.mobi

    android开发精要.mobi 《Android开发精要》如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是最重要的方法之一!...从而编写出高质量的Android应用。

    Android安卓使用iosocket进行Socket通信简单封装优雅写代码

    对iosocket进行简单封装,使得定制代码更加容易,迭代开发十分方便,实现方式十分优雅,作为一个有洁癖的程序员,自然要用最优雅的方式写出高质量的代码啦

    Android开发精要.mobi

    如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是重要的方之一!然而,Android系统太过于庞,源代码实现复杂,习的技术门槛和时间成本都很高。有...

    Android学习安卓客户端

    Android学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者Java开发人员,本书都志在全面提高您的Android编程思想和开发实力,使您能够写出高质量的Android代码,相信读完本书后能使您获益匪浅。

    Android学习(apk)

    Android学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者Java开发人员,本书都志在全面提高您的Android编程思想和开发实力,使您能够写出高质量的Android代码,相信读完本书后能使您获益匪浅。

    Android开发精要-范怀宇.pdf

    简介:《Android开发精要》如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是最重要的方法之一!...从而编写出高质量的Android应用。

    Android开发精要

    《Android开发精要》如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用?通过Android的源代码去了解其底层实现细节是最重要的方法之一!然而,Android系统太...从而编写出高质量的Android应用。

    《Android开发精要》范怀宇 PDF

    它从Android繁杂的源代码中抽取出了Android开发的“精华”和“要点”,剥离了大量琐碎的底层实现细节,进行了高度概括和总结,不仅能帮助开发者迅速从宏观上理解整个Android系统的设计理念,而且能帮助开发者迅速从...

    Android程序设计基础

    本书既恰到好处地讲解了Android独有的特性,同时也突出了高质量编程的原则。  ——Anthony Stevens  PocketJourney创始人兼CTO,Google Android竞赛前20强  Ed Burnette的这本书虽然篇幅不长,但内容丰富,...

    android通过json数据访问服务器

    采用json访问网络服务器,并且是通过多线程来访问的,代码整洁规划,注释易懂,花了不少心思才写出比较高质量的代码,与初学者和刚接触网络编程的菜鸟来分享

    Android代码-以后gnak的妹子就靠它了

    爱 :当然上面图片的质量挺高的,于是自己先是用python写了爬虫,把整站的图片爬到了七牛上,是不是看到这里大家就已经迫不及待了,表急啊。但是出现了一个问题就是这个网站更新挺快的,一来我不想在服务器搞服务搞...

    Java Web学习(apk)

    JavaWeb学习是Android客户端目前最...无论您是在校大学生,还是职业学员,或者JavaWeb开发人员,本书都志在全面提高您的JavaWeb编程思想和开发实力,使您能够写出高质量的JavaWeb代码,相信读完本书后能使您获益匪浅。

    Jsp学习(apk)

    Jsp学习是Android客户端目前最全面的免费... 无论您是在校大学生,还是职业学员,或者Jsp设计开发人员,本书都志在全面提高您的Jsp设计思想和开发实力,使您能够写出高质量的Jsp代码,相信读完本书后能使您获益匪浅。

    JavaWeb学习(apk)

    JavaWeb学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者JavaWeb开发人员,本书都志在全面提高您的JavaWeb编程思想和开发实力,使您能够写出高质量的JavaWeb代码,相信读完本书后能使您获益匪浅。

    JavaWeb学习安卓版

    JavaWeb学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者JavaWeb开发人员,本书都志在全面提高您的JavaWeb编程思想和开发实力,使您能够写出高质量的JavaWeb代码,相信读完本书后能使您获益匪浅。

    Jsp学习安卓版

    Jsp学习是Android客户端目前最全面的免费... 无论您是在校大学生,还是职业学员,或者Jsp设计开发人员,本书都志在全面提高您的Jsp设计思想和开发实力,使您能够写出高质量的Jsp代码,相信读完本书后能使您获益匪浅。

    c++学习(apk)

    C++学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者其他开发人员,本书都志在全面提高您的C++编程思想和开发实力,使您能够系统的学习C++,写出高质量的C++代码,相信读完本书后能使您获益匪浅。

    C语言学习(apk)

    C语言学习是Android客户端... 无论您是在校大学生,还是职业学员,或者其他开发人员,本书都志在全面提高您的C语言编程思想和开发实力,使您能够系统的学习C语言,写出高质量的代码,相信读完本书后能使您获益匪浅。

    C++学习安卓版

    C++学习是Android客户端目前最... 无论您是在校大学生,还是职业学员,或者其他开发人员,本书都志在全面提高您的C++编程思想和开发实力,使您能够系统的学习C++,写出高质量的C++代码,相信读完本书后能使您获益匪浅。

Global site tag (gtag.js) - Google Analytics