1. String[]: ArrayAdapter 2. List<Map<String,?>>: SimpleAdapter 3. 数据库Cursor: SimpleCursorAdapter 使用ArrayAdapter(数组适配器)顾名思义,需要把数据放入一个数组以便显示。 android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字 SimpleAdapter能定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框) //=============================SimpleAdapter========================== public class List3 extends ListActivity { List<Map<String, Object>> list; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); list = getListForSimpleAdapter(); //list为数据集合 SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.item, new String[] { "BigText", "LittleText", "img" }, new int[] { R.id.BigText,R.id.LittleText, R.id.img }); //可以想成把一个放好数据的布局文件放入本界面中 setListAdapter(adapter); } private List<Map<String, Object>> getListForSimpleAdapter() { List<Map<String,Object>> list=newArrayList<Map<String, Object>>(3); Map<String, Object> map = new HashMap<String, Object>(); map.put("BigText", "Android"); map.put("LittleText", "Google phone."); map.put("img", R.drawable.n); list.add(map); map = new HashMap<String, Object>(); map.put("BigText", "Lenovo"); map.put("LittleText", "Ophone"); map.put("img", R.drawable.o); list.add(map); map = new HashMap<String, Object>(); map.put("BigText", "Droid"); map.put("LittleText", "Motorola"); map.put("img", R.drawable.droid); list.add(map); return list; } } //==============================SimpleCursorAdapter=================== 注意:SimpleCursorAdapter是和数据库有关的东西,而sqlite数据库所要求的 自动增长的 id 必须是 _id这中形式 public class List2 extends Activity { private ListView listView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); listView=new ListView(this); Cursorc=getContentResolver().query(People.CONTENT_URI, null, null, null, null); startManagingCursor(c); ListAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, new String[] {People.NAME} , new int[] {android.R.id.text1}); listView.setAdapter(adapter); setContentView(listView); } } |
数据源不同而已