ListView显示的3个元素:

  1. ListView:用来展示列表的View
  2. 适配器:用来把数据映射到ListView上的中介
  3. 数据:具体的将被映射的字符串,图片,或者基本组件

适配器:
ArrayAdapter
SimpleAdapter
baseAdapter

image.png

ArrayAdapter

  1. 支持所有类型的数组,也就是在列表中只支持文字
  2. 构造函数

image.png

  1. 使用方法
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)绑定适配器,给入需要的参数。

注意:

  1. 这里两个xml文件,一个xml文件只有一个ListView控件,另一个xml文件(“list.xml”)有一个imageView和TextView控件,作为参数传给了SimpleAdapter;
  2. 注意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

  1. 可以自定义View
  2. 使用方法
    (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){ //判断缓存对象是否为null,不为null时已经缓存了对象
textView = (TextView)convertView;

}else { //等于null,说明第一次显示,所以新创对象
textView = new TextView(MainActivity.this);
}

String string =list.get(position); //获得指定位置的数据,进行对TextView的绑定
textView.setText(string);
return textView;
}
}
//此方法返回的事ListView的列表中某一行的View对象
//position 当前返回的view的索引位置
//convertView 缓存对象
//parent 就是ListView对象