3 初始化适配器数据
在2.1中提到自定义的适配器ContinentAdapter的构造函数的第三个参数是List<Continent>,该参数也是自定义类Continet的列表,该列表作为自定义适配器的数据。
3.1 定义数据
在MainActivity类中定义List<Continent>变量
private List<Continent>continentList =new ArrayList<Continent>();
3.2 初始化数据
在MainActivity类中定义InitContinent()方法,在该方法中对之前定义的continentList进行初始化,即指定列表中的元素。
privatevoid InitContinent()
{
Continentcaf = newContinent("亚洲", R.drawable.afc);
continentList.add(caf);
Continentafc = newContinent("非洲", R.drawable.caf);
continentList.add(afc);
Fruitconcacaf = new Continent("中北美洲", R.drawable.concacaf);
continentList.add(concacaf);
Fruitcsf = newContinent("南美洲", R.drawable.csf);
continentList.add(csf);
Fruitofc = newContinent("大洋洲", R.drawable.ofc);
continentList.add(ofc);
Fruituefa = new Continent("欧洲", R.drawable.uefa);
continentList.add(uefa);
}
该方法的作用是通过new关键字创建了6个Continent类型的变量,并将这些变量都加入到列表中。
4 适配器的指定
接下来创建自定义的ContinentAdapter适配器,并将适配器指定给ListView控件。在MainActivity的onCreate()方法中,有如下代码
1 InitContinent();
2 ContinentAdapteradapter =new ContinentAdapter(MainActivity.this,
3 R.layout.continent_item,continentList);
4 ListViewlistView = (ListView)findViewById(R.id.list_view);
5 listView.setAdapter(adapter);
其中,第1行中InitContinent()初始化了适配器的数据;第2-3行通过new关键字定义了自定义适配器ContinentAdapter,其中构造函数的第一个参数MainActivity.this表示本程序的上下文;第二个参数R.layout.continent_item是新添加的XML布局文件,在该文件中包含一个TextView控件和一个ImageView控件,作为ListView每个子项的布局,第三个参数continentList是在InitContinent()方法中初始化的数据;第4行获取到ListView控件,R.id.list_view是该控件的ID;第5行通过setAdapter()方法指定ListView控件的适配器,该方法的参数adapter即为第2行中定义的自定义适配器ContinentAdapter的对象。
5 小结
今天学习了在ListView控件中显示图像和文字的方法。通过设置ListView控件的适配器实现。该适配器为自定义适配器,在自定义适配器中,重写getView()方法,设置ListView每个子项的数据、布局以及布局中各控件显示的内容。