一般用于只有两个控件的列表。
使用SimpleAdapter 的数据是以List<Map<String,?>>形式封装数据, List的每一节对应ListView的每一行。 HashMap的每个键值 数据映射到布局文件中对应id的组件上。因为系统没有对应的布局文件可用, 我们可以自己定义一个布局文件。
activity_main.xml
<RelativeLayout 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" tools:context=".MainActivity" > <ListView android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/lv"> </ListView> </RelativeLayout>
MainActivity.java
package com.example.simpleadapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.widget.ListView; import android.widget.SimpleAdapter; public class MainActivity extends Activity { private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); // 模拟数据 List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); for (int i = 0; i < 20; i++) { // 一个Map就是对应了一个条目的数据 Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "老师" + i); map.put("age", 30); data.add(map); } /* 创建一个简单SimpleAdapter对象 第一个参数Context上下文 第二个参数data要显示的数据集合 第三个参数id指定一个作为ListView的子条目的布局文件 第四个参数String[]定义得MAP中key组成的数组 第五个参数int[]控件的id组成数组,必须与第四个参数的key一一对应 */ SimpleAdapter adapter = new SimpleAdapter(this, // context上下文 data, // data 数据 android.R.layout.simple_list_item_2,// resource 条目的布局 new String[] { "name", "age" },// from 数据从哪里来 key new int[] { android.R.id.text1, android.R.id.text2 });// to数据到哪里 lv.setAdapter(adapter); // 条目里面控件的id } }
效果图如下: