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);