菜鸟的Android学习笔记(二)

列表视图(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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值