目录

  • 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 第三课 应用案例-应用升级
第三课  ListView 组件高级使用

一、ListView控件的使用

在Android开发中,ListView是一个比较常用的控件。它以列表的形式展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。

 <ListView

            android:id="@+id/lv"

            android:layout_width="match_parent"

            android:layout_height="match_parent">

  </ListView>


常用数据适配器(Adapter)

在使用ListView时需要对其进行数据适配。为了实现这个功能,Android系统提供一系列的适配器(Adapter)对ListView进行数据适配。


适配器就像显示器,把复杂的数据按人们易于接受的方式来展示。

BaseAdapter

•即基本的适配器。它实际上就是一个抽象类,该类拥有四个抽象方法。在Android开发中,就是根据这几个抽象方法来对ListView进行数据适配的

SimpleAdapter

•SimpleAdapter继承自BaseAdapter,实现了BaseAdapter的四个抽象方法,分别是getCount()、getItem()、getItemId()、getView()方法。

•ArrayAdapter

•ArrayAdapter也继承自BaseAdapter,与SimpleAdapter相同。ArrayAdapter通常用于适配TextView控件,例如Android系统中的设置菜单(Setting)。

案例—Android应用市场


布局文件如下:

<LinearLayout xmlns: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"

    android:orientation="vertical">

    <ListView

        android:id="@+id/lv"

        android:layout_width="match_parent"

        android:layout_height="wrap_content" />

</LinearLayout>

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

    android:layout_width="match_parent"

    android:layout_height="wrap_content">  

    <ImageView

        android:id="@+id/image"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_alignParentLeft="true"

        android:layout_margin="5dp"/> 

    <TextView

        android:id="@+id/tv_list"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_centerInParent="true"

        android:paddingLeft="15dp"

        android:layout_marginLeft="20dp"

        android:textSize="18sp"

        android:hint="我是ListView的Item布局" />

</RelativeLayout>


java文件:

public class MainActivity extends Activity {

private ListView mListView;

// 需要适配的数据

private String[] names = { "京东商城", "QQ", "QQ斗地主", "新浪微博", "天猫",

                  "UC浏览器", "微信" };

private int[]  icons = {R.drawable.jd,R.drawable.qq,R.drawable.qq_dizhu,

               R.drawable.sina,R.drawable.tmall,R.drawable.uc,

               R.drawable.weixin};

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 初始化ListView控件

mListView = (ListView) findViewById(R.id.lv);

// 创建一个Adapter的实例

MyBaseAdapter mAdapter = new MyBaseAdapter();

// 设置Adapter

mListView.setAdapter(mAdapter);


}

// 创建一个类继承BaseAdapter

class MyBaseAdapter extends BaseAdapter {

// 得到item的总数d

public int getCount() {

// 返回ListView Item条目的总数

return names.length;

}

// 得到Item代表的对象

public Object getItem(int position) {

// 返回ListView Item条目代表的对象

return names[position];

}

// 得到Item的id

public long getItemId(int position) {

// 返回ListView Item的id

return position;

}

// 得到Item的View视图

public View getView(int position, View convertView, ViewGroup parent) {

// 将list_item.xml文件找出来并转换成View对象

View view = View.inflate(MainActivity.this, R.layout.list_item,

null); // 找到list_item.xml中创建的TextView

TextView mTextView = (TextView) view.findViewById(R.id.tv_list);

ImageView imageView = (ImageView) view.findViewById(R.id.image);

mTextView.setText(names[position]);

imageView.setBackgroundResource(icons[position]);

return view;

}

}

}