ListView显示的3个元素:
- ListView:用来展示列表的View
- 适配器:用来把数据映射到ListView上的中介
- 数据:具体的将被映射的字符串,图片,或者基本组件
适配器:
ArrayAdapter
SimpleAdapter
baseAdapter
…
ArrayAdapter
- 支持所有类型的数组,也就是在列表中只支持文字
- 构造函数
- 使用方法
1 2 3 4
| listView = (ListView)findViewById(R.id.lv_list); String [] data = {"zhangsan","lisi","wangwu"}; adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data); listView.setAdapter(adapter);
|
SimpleAdapter
使用场景:可以自定义一些列表样式
使用方法:
(1)创建一个包含Map的集合;
(2)将数据加入map,给list;
(3)绑定适配器,给入需要的参数。
注意:
- 这里两个xml文件,一个xml文件只有一个ListView控件,另一个xml文件(“list.xml”)有一个imageView和TextView控件,作为参数传给了SimpleAdapter;
- 注意SimpleAdapter要的参数
1 2 3 4 5 6 7 8 9 10
| List<Map<String,Object>> data = new ArrayList<Map<String,Object>>(); Map<String,Object> map = new HashMap<String, Object>(); map.put("name","zhangsan"); map.put("icon", R.drawable.man); data.add(map); ... SimpleAdapter adapter = new SimpleAdapter(this,data,R.layout.list,new String[]{"name","icon"},new int[]{R.id.vt_text,R.id.iv_image}); listView.setAdapter(adapter);
|
BaseAdapter
- 可以自定义View
- 使用方法
(1)新建一个ListView的xml文件
(2)Java代码中:
1 2
| lList = (ListView)findViewById(R.id.lv_list); lList.setAdapter(new MyAdapter());
|
(3)内部类中,重写3个方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| class MyAdapter extends BaseAdapter{
@Override public int getCount() { return getList().size(); }
@Override public Object getItem(int position) { return null; }
@Override public long getItemId(int position) { return 0; }
@Override public View getView(int position, View convertView, ViewGroup parent) { TextView textView = null;
if (convertView != null){ textView = (TextView)convertView;
}else { textView = new TextView(MainActivity.this); }
String string =list.get(position); textView.setText(string); return textView; } }
|