目录

  • 1 第一周 android简介
    • 1.1 第一课 Android基础入门1
    • 1.2 第二课 Android基础入门2
    • 1.3 第三课 Android UI开发介绍
  • 2 第二周 android布局
    • 2.1 第一课 Android 布局文件介绍1
    • 2.2 第二课 Android 布局文件介绍2
    • 2.3 第三课 Android 布局文件介绍3
  • 3 第三周 Android UI组件开发
    • 3.1 第一课 Button和ImageButton
    • 3.2 第二课 TextView和EditText
    • 3.3 第三课 RadioButton和CheckBox
  • 4 第四周 Android UI组件开发
    • 4.1 第一课 Spinner和ListView
    • 4.2 第二课 应用案例-手机信息页面
    • 4.3 第三课 Android生命周期
  • 5 第五周 Android组件通信
    • 5.1 第一课 Intent的介绍
    • 5.2 第二课 Intent实现各种系统功能
    • 5.3 第三课 应用案例-手机注册页面
  • 6 第六周 数据存储
    • 6.1 第一课 应用案例-新建联系人
    • 6.2 第二课 数据存储-简单文件存储
    • 6.3 第三课 SharedPreferences存储
  • 7 第七周 数据存储
    • 7.1 第一课 xml文件存储
    • 7.2 第二课 应用案例-植物百科
    • 7.3 第三课  ListView 组件高级使用
  • 8 第八周 SQLite数据库
    • 8.1 第一课 应用案例-应用列表
    • 8.2 第二课 使用SQLite数据库存储(创建数据库和表)
    • 8.3 第三课 使用SQLite数据库存储(对表数据操作)
  • 9 第九周 项目实战-商品购物车处理
    • 9.1 第一课 使用SQLite数据库存储(对表数据查询)
    • 9.2 第二课 商品购物车处理(布局)
    • 9.3 第三课 商品购物车处理(数据处理)
  • 10 第十周 内容提供者及广播
    • 10.1 第一课 内容提供者的使用
    • 10.2 第二课 广播概念以及如何使用
    • 10.3 第三课 自定义广播
  • 11 第十一周 广播和服务
    • 11.1 第一课 应用案例-电池电量
    • 11.2 第二课 应用案例-通话记录
    • 11.3 第三课 服务简介
  • 12 第十二周 服务应用
    • 12.1 第一课 应用案例—音乐播放器
    • 12.2 第二课 应用案例—地震监测
    • 12.3 第三课 获得手机SIM卡信息
  • 13 第十三周 网络编程
    • 13.1 第一课 网络编程入门
    • 13.2 第二课 使用HttpClient访问网络
    • 13.3 第三课 webview组件
  • 14 第十四周 网络编程应用案例
    • 14.1 第一课 消息机制简介
    • 14.2 第二课 应用案例-应用升级
    • 14.3 第三课 应用案例-应用升级
第一课 应用案例-应用列表

应用列表

一、案例描述

1、考核知识点

ListView控件的使用

常用数据适配器

2、练习目标

Ø 掌握ListView展示数据

3、需求分析

应用的安装和卸载应用实现了将两个应用显示在界面上的功能,如果要把手机上所有应用都展示在手机上使用基本控件很难实现,展示列表型的数据可以使用ListView控件。

4、设计思路(实现原理)

1)获取设备上安装的所有应用列表,将列表使用ListView展示在界面上。 

二、案例实现

1)应用列表程序

创建“应用列表”程序,首先创建MainActivity用于显示信息,该程序的界面如图5-6所示。


                                    图5-1           主界面

主界面对应的布局文件(activity_main)如下所示:

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   android:layout_width="match_parent"

   android:layout_height="match_parent"

    tools:context=".MainActivity" >

   <ListView

       android:id="@+id/listview"

       android:layout_width="match_parent"

       android:layout_height="match_parent" />

</RelativeLayout>


2)编写逻辑代码

MainActivity的代码如下所示:

 1  public class MainActivityextends Activity {

 2      private List<UserAPPInfo> allAppList;

 3      private MyAdapter adapter;

 4      private PackageManager pManager;

 5      @Override

 6      protected void onCreate(Bundle savedInstanceState) {

 7          super.onCreate(savedInstanceState);

 8          setContentView(R.layout.activity_main);

 9          getAppMessage();

 10         ListView listView = (ListView) findViewById(R.id.listview);

 11         adapter = new MyAdapter();

 12         listView.setAdapter(adapter);

 13     }

 14     private void getAppMessage() {

 15         pManager = getPackageManager();

 16         List<PackageInfo> packages = getPackageManager()

 17                 .getInstalledPackages(0);

 18         allAppList = new ArrayList<UserAPPInfo>();

 19         for (int i = 0; i < packages.size(); i++) {

 20             PackageInfo packageInfo = packages.get(i);

 21             UserAPPInfo userInfo = new UserAPPInfo();

 22             String name = packageInfo.applicationInfo.loadLabel(

 23                     getPackageManager()).toString();

 24             userInfo.setName(name);

 25             userInfo.setPakName(packageInfo.packageName);

 26             userInfo.setCode(packageInfo.versionName);

 27             userInfo.setIco(drawableToBitmap(packageInfo.applicationInfo

 28                     .loadIcon(getPackageManager())));

 29             allAppList.add(userInfo);

 30         }

 31     }

 32     private class MyAdapter extends BaseAdapter {

 33         @Override

 34         public int getCount() {

 35             return allAppList.size();

 36         }

 37         @Override

 38         public Object getItem(int position) {

 39             return allAppList.get(position);

 40         }

 41         @Override

 42         public long getItemId(int position) {

 43             return position;

 44         }

 45         @Override

 46         public View getView(int position, View convertView, ViewGroupparent) {

 47             View item = convertView != null ? convertView :View.inflate(

 48                     MainActivity.this, R.layout.listview_item, null);

 49             TextView tv_name = (TextView)item.findViewById(R.id.tv_name);

 50             TextView tv_pakName = (TextView)item.findViewById(R.id.tv_pakName);

 51             ImageView iv_ico = (ImageView)item.findViewById(R.id.iv_ico);

 52             tv_name.setText(allAppList.get(position).getName());

 53             tv_pakName.setText(allAppList.get(position).getPakName());

 54             iv_ico.setImageBitmap(allAppList.get(position).getIco());

 55             return item;

 56         }

 57     }

 58     public static Bitmap drawableToBitmap(Drawable drawable) {

 59         Bitmap bitmap = Bitmap

 60                 .createBitmap(

 61                         drawable.getIntrinsicWidth(),

 62                         drawable.getIntrinsicHeight(),

 63                         drawable.getOpacity() != PixelFormat.OPAQUE ?

 64                             Bitmap.Config.ARGB_8888

 65                                 : Bitmap.Config.RGB_565);

 66         Canvas canvas = new Canvas(bitmap);

 67         drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),

 68                 drawable.getIntrinsicHeight());

 69         drawable.draw(canvas);

 70         return bitmap;

 71     }

 72 }



当手指向下滑动,会展示出手机上所安装的所有应用。

三、案例总结

1ListView必须设置id属性才能将数据显示在页面上。