把复杂的数据(数组、链表、数据库、集合等)填充到指定的视图界面上。
arrayAdapter(数组适配器):
用于绑定一些格式单一的数据,数据源:数据或者集合。
private ListView listView ;
private ArrayAdapter<String> adapter ;
private SimpleAdapter simpleAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);
listView=(ListView) findViewById(R.id. listView1);
/**
* 新建一个数据适配器
* arrayadapter(上下文,当前 listview加载的每个列表项所对应的布局文件,所对应的数据源)
*/
String[] data={ "az","az1" };
adapter= new ArrayAdapter<String>(this ,android.R.layout.simple_list_item_1,data);
//使用视图(listview)加载适配器
listView.setAdapter( adapter);
}
SimpleAdapter(简单适配器):
用于绑定一些格式复杂的适配器,数据源:只能是特定的泛型集合。
private ListView listView ;
private SimpleAdapter simpleAdapter ;
/**
* context:上下文
* data:数据源(特定的泛型集合) List<? extends Map<String, ?>> data 一个MAP所组成的LIST集合
* ,每一个MAP都会对应 listview列表中的一行,每一个map中的KAY必须要包含所有在from中所指定的键
* from:map中的键名
* resource:列表项的布局文件
* to:绑定数据视图中的ID,与from成对应关系
*/
datalist= new ArrayList<Map<String, Object>>();
simpleAdapter=new SimpleAdapter(this, getdata(), R.layout.activity_main , new String[]{"image", "text"}, new int[]{R.id.imageView1 ,R.id.textView1});
listView.setAdapter( simpleAdapter);
private List<Map<String, Object>> getdata(){
for (int i = 0; i < 20; i++) {
Map<String, Object>map= new HashMap<String,Object>();
map.put( "image", R.drawable.ic_launcher);
map.put( "text", "az" );
datalist.add(map);
}
return datalist ;
}
数据适配器是链接数据源和视图界面的桥梁。
实现过程:新建适配器——添加数据源到适配器——视图加载适配器