Adapter
将数据以列表的形式显示到屏幕上,需要三步:
1) 需要一个ListView
2) 准备好要显示的数据,这些数据可能是数组,元素是map的集合,从数据库或者内容提供者中查询获得的游标
3) 需要一个将数据逐条读入然后装入到相应列表项的适配器,通过适配器可以设置列表项的布局以及绑定要显示的数据
根据要显示的数据源的不同,适配器常用的有如下三种,以下代码都是基于ListActivity,该对象本身持有一个listView对象,该对象提供给了一些方法来管理listview对象。
ArrayAdapter
数组适配器,用于显示一个数组,用法如下:
String []data={"google","amazon","baidu"};
ArrayAdapter adapter=new ArrayAdapter(this, R.layout.array, data);
this.setListAdapter(adapter);
SimpleAdapter
用于显示静态数据,一般是一个list集合,list中的元素是map<String, object>类型,每个map对应一个列表项,map中的每个元素对应着一个列名和列值,用法如下:
List <Map<String,Object>> list=new ArrayList<Map<String,Object>>();
Map<String,Object> item1=new HashMap<String,Object >();
Map<String,Object> item2=new HashMap<String,Object >();
item1.put("Name", "hulu");
item1.put("Age", 23);
item1.put("genda", "male");
item1.put("major", "computer");
item2.put("Name", "limeng");
item2.put("Age", 25);
item2.put("genda", "male");
item2.put("major", "program");
list.add(item1);
list.add(item2);
SimpleAdapter adapter=new SimpleAdapter(this,list,
R.layout.activity_main,
new String[]{"Name","Age"},
new int[]{R.id.text1,R.id.text2});
this.setListAdapter(adapter);
SimpleCursorAdapter
用于显示查询结果集的游标,数据源通常是一个SQLite数据库或者是一个内容提供者,用法如下:
ContentResolver resolver=this.getContentResolver();
Cursor cursor=resolver.query(People.CONTENT_URI, null, null, null, null);
this.startManagingCursor(cursor);
SimpleCursorAdapter adapter=new SimpleCursorAdapter(this, R.layout.activity_main, cursor,
new String[]{People.NAME,People.NUMBER},
new int[]{R.id.text1,R.id.text2});
this.setListAdapter(adapter);