天天看点

Android开发详解之ListView详解一

列表ListView介绍和实例

 1.ListView  -- ListActivity -- ListAdapter

 2.ArrayAdapter结合ListView进行显示

 3.SimpleAdapter结合ListView进行显示

 4.处理单击ListView事件,处理选择ListView的事件

 5.使用SimpleCursorAdapter与ListView进行关联

 ListView :

要让一个ListView显示出来需要的3个条件:

1.ListView  --- 需要被显示的列表

2.Data      --- 和ListView绑定的数据,一般是一个Cursor或字符串数组

3.ListAdapter --- data和ListView的桥梁  --- 适配作用

常用ListAdapter子类:

ArrayAdapter     ---  数组适配  ---- ListAdapter的直接子类

  ArrayList<类型>(context,int itemLayout, data)

  context:上下文环境

  itemLayout:自定义的每一项要显示的Layout

  data:要显示的数据

 例子:

  ArrayAdapter<String> adapter = new ArrayAdapter<String>(ArrayAdapterListViewActivity.this, android.R.layout.simple_list_item_1, data);

   android.R.layout.simple_list_item_1  --- 使用Android自带的 每一项Listview显示布局   -- 实际应用中常常自定义此item布局

  特别注意:itemLayout  --- ListView中每一项(行)的布局  ---  可以引用系统自带的,但 实际项目中更多是使用自定义的item布局

  系统自带的常用item布局:

  android.R.layout.simple_list_item_1    ----- 每一项只有一个TextView

  android.R.layout.simple_list_item_1    ----- 每一项只有两个TextView

  android.R.layout.simple_list_item_single_choice   ----- 每一项有一个TextView,但这一项可以被选择

SimpleAdapter    ---  简单适配  ---- ListAdapter的直接子类

 通过SimpleAdapter可以让ListView当中的每一项内容更加个性化,

 通常将ListView中某项的布局信息写在XML文件中,这个布局文件通过R.layout.XX -- 引入到ListView中

 SimpleAdapter是ArrayList和Listview之间的桥梁  

 ArrayList中的每一项都是一个Map<String,?>类型。ArrayList当中的每一项Map对象都和ListView当中的一项进行数据绑定和一一对应

SimpleAdapter的构造器:

public SimpleAdapterK(Context context, List<? extends Map<String,?>> data, int resource, String[] from , int[] to)

context  -- 上下文

data     -- 基于Map的List,Data里面的每一项都和ListIView里的每一项对应。Data里面的每一项都是Map类型,

            这个Map类中包含了ListView每一行需要的数据  --- 常用  data = new ArrayList<Map<String,Object>>();

resource -- 一个layout, 必须包含在to中出现的那些View,系统提供或自定义layout布局都可。

            系统提供的有:android.R.layout.simpe_list_item_single_choice

                 android.R.layout.two_line_list_item

from     -- 数组名,每一个名字是为了在ArrayList中的每一个item中索引Map<String, Object>的Object用的

to       -- 这里面是一个TextView的数组,这些TextView以id形式表示,这鞋View必须是TextView

为ListView中的每一项添加事件处理:    OnItemClickListener 

OnItemClickListener listener = new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view, int position,

long id) {

setTitle(parent.getItemAtPosition(position).toString());

}

};

listView.setOnItemClickListener(listener);

说明:

onItemClick  --  回调函数,当用户单击ListView每一项时,自动执行

    parent     --- 被单击的ListView

    view       --- 用户操作的那一项

    position   --- 操作的item项在ListView中的位置

    id         --- 被选中的那一行的id

getItemAtPosition(position)  --- 通过position获得和这一行绑定的数据, 本例中只是把改行内容作为title写出来

listView.setOnItemClickListener(listener)   --- 将监听器注册到ListView中

实例代码:

ArrayAdapter与ListView

SimpleAdapter与ListView

继续阅读