ITEEDU

SimpleAdapter

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

参数:


context

上下文,一般为this

data

一个字典类型的list。每一项对应list中的一行。字典包含所有行,而且包含from中指定的所有列。

resource

定义列表项布局的布局资源的id。应含有to中的所有项。

from

map中要映射到list中的列名(键名)

to

显示from中列的视图。全为TextView 。与from中的顺序一一对应。

resource是item的视图,为listview中的行定义显示的样式,至少包含了to中的对象。

from是data中map的键,映射到to中的对象上显示。

通过构建list,并设置每项为一个map来实现:

创建TestList类继承Activity

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String, Object>> users = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < 10; i++) {
	HashMap<String, Object> user = new HashMap<String, Object>();
	user.put("img", R.drawable.user);
	user.put("username", "姓名(" + i+")");
	user.put("age", (20 + i) + "");
	users.add(user);
}
SimpleAdapter saImageItems = new SimpleAdapter(
	this,
	users,// 数据来源
	R.layout.user,//每一个user xml 相当ListView的一个组件
	new String[] { "img", "username", "age" },// 分别对应view 的id
	new int[] { R.id.img, R.id.name, R.id.age });
// 获取listview
((ListView) findViewById(R.id.users)).setAdapter(saImageItems);

下面是main.xml的内容:

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical" android:layout_width="fill_parent"
     android:layout_height="fill_parent">
     <TextView android:text="用户列表" android:gravity="center"
         android:layout_height="wrap_content"
         android:layout_width="fill_parent" android:background="#DAA520"
         android:textColor="#000000">
     </TextView>
     <LinearLayout 
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
         <TextView android:text="姓名" 
             android:gravity="center" android:layout_width="160px"
             android:layout_height="wrap_content" android:textStyle="bold"
             android:background="#7CFC00">
         </TextView>
         <TextView android:text="年龄" 
             android:layout_width="170px" android:gravity="center"
             android:layout_height="wrap_content" android:textStyle="bold"
             android:background="#F0E68C">
         </TextView>
     </LinearLayout>
 <ListView android:layout_width="wrap_content" 
         android:layout_height="wrap_content" android:id="@+id/users">
     </ListView>
 </LinearLayout>

之中listView前面的可以说是标题行,listview相当于用来显示数据的容器,里面每行是一个用户信息,而用户信息是样子呢?

use.xml

<?xml version="1.0" encoding="utf-8"?>  
 <TableLayout    
          android:layout_width="fill_parent"    
          xmlns:android="http://schemas.android.com/apk/res/android"    
          android:layout_height="wrap_content"    
          > 
          <TableRow > 
          <ImageView    
                android:layout_width="wrap_content"    
                android:layout_height="wrap_content"   
                android:id="@+id/img">    
          </ImageView>  
          <TextView    
                android:layout_height="wrap_content"    
                android:layout_width="150px"    
                android:id="@+id/name">  
          </TextView>  
          <TextView    
                android:layout_height="wrap_content"   
                android:layout_width="170px"    
                android:id="@+id/age">  
          </TextView> 
          </TableRow> 
 </TableLayout>  

也就是说每行包含了一个img 和2个文字信息。
这个文件以参数的形式通过adapter在listview中显示。