菜鸟的Android学习笔记(二)

来源:互联网 发布:淘宝七天退换什么意思 编辑:程序博客网 时间:2024/06/10 06:10

列表视图(ListView)

使用数组创建ListView十分简单,但能够定制的内容很少。把ListView作为AdapterView使用,可以通过Adapter控制每个列表项的外观和行为。

  • Adapter

    Adapter本身只是一个接口,常用的实现类有:ArrayAdapter,SimpleAdapter, BaseAdapter.

  • 使用ArrayAdapter创建ListView
    ArrayAdapter由数组或List为列表项提供数据。列表项的外观用单独的xml布局文件控制,可以指定字号,
    颜色,分割线颜色等。代码很简单,这里距不贴了。
    这里写图片描述

  • 使用SimpleAdapter创建ListView
    假设,我们要创建一个类似于QQ好友列表的列表视图,如图:

    每个列表项的对应的布局文件很简单:1个ImageView和2个TextView水平排列;2个TextView之间垂直排列。布局文件simple_item.xml如下。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="wrap_content"><!-- 定义一个ImageView,用于作为列表项的一部分。 --><ImageView android:id="@+id/header"    android:layout_width="wrap_content"    android:layout_height="wrap_content"     android:paddingLeft="10dp"/><LinearLayout    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="wrap_content"><!-- 定义一个TextView,用于作为列表项的一部分。 --><TextView android:id="@+id/name"    android:layout_width="wrap_content"     android:layout_height="wrap_content"    android:textSize="20dp"    android:textColor="#f0f"    android:paddingLeft="10dp"/><!-- 定义一个TextView,用于作为列表项的一部分。 --><TextView android:id="@+id/desc"    android:layout_width="wrap_content"     android:layout_height="wrap_content"    android:textSize="14dp"    android:paddingLeft="10dp"/></LinearLayout></LinearLayout>

要使用SimpleAdapter,首先需要建立一个List集合,用来保存所有的列表项。单个列表项的数据用
Map<String,?>来保存,要填充几个组件就需要几个key-value键值对。创建SimpleAdapter对象时,需要传入5个参数。

  • 第一个参数: this指针
  • 第二个参数:即刚刚建立的List集合,集合中每个元素对应一个列表项
  • 第三个参数:列表项界面的布局ID
  • 第四个参数:该参数类型为String[],用来提取map<String,?>中对应key的值
  • 第五个参数:类型为int[], 值为列表项中需要填充的组件的ID
public void onCreate(Bundle savedInstanceState)    {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        // 创建一个List集合,List集合的元素是Map        List<Map<String, Object>> listItems =                new ArrayList<Map<String, Object>>();        for (int i = 0; i < names.length; i++)        {            Map<String, Object> listItem = new HashMap<String, Object>();            listItem.put("header", imageIds[i]);            listItem.put("personName", names[i]);            listItem.put("desc", descs[i]);            listItems.add(listItem);        }        // 创建一个SimpleAdapter        SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,                R.layout.simple_item,                new String[] { "personName", "header" , "desc"},                new int[] { R.id.name, R.id.header , R.id.desc });        ListView list = (ListView) findViewById(R.id.mylist);        // 为ListView设置Adapter        list.setAdapter(simpleAdapter);
0 0
原创粉丝点击