3.2.4 重写getView()方法
(1)导入ListView项对应的布局文件
在重写的getView()方法中,首先导入ListView项对应的布局文件,如图12所示。
图12 导入ListView项布局文件
图12①中,converView是getView()方法的第二个参数,表示converView刷新ListView项之前的“老视图”;flater是FootballClub类的成员变量,在构造函数中已经对其进行了初始化操作,其值是与上下文相关的LayoutInflater对象。通过该对象调用的inflate()方法的作用是导入指定的布局文件,该方法的第一个参数是指定的布局文件ID,第二个参数是该布局文件的上一级视图,null表示该布局不是根布局。
(2)关联布局文件中的控件
接下来,将变量与布局文件中的控件进行关联,如图13所示。
图13关联布局文件中的控件
在“2 定义布局文件”中提到,ListView项对应的布局文件footballclub_list_item.xml文件中包含一个ImageView控件和一个TextView控件,图13中将ImageView控件与变量flag关联,将TextView控件与变量name关联。
(3)设置控件内容
接下来设置布局文件中控件的内容,如图14所示。
图14 设置控件内容
其中,图14①调用了“3.2.3 重写getCount()、getItem()、getItemId()方法”中重写的getItem()方法获取指定位置position的数据,该数据为FootballClub类的对象,position是getView()方法的第一个参数。之后,通过变量flag和name将获取到的数据中的图片ID和名称在控件中显示出来。最后,返回converView(图14③),作为getView()方法的返回值。
4 将适配器与数据和ListView绑定
在主程序的代码中,将适配器与数据和ListView绑定。
4.1 适配器与数据绑定
适配器与数据绑定的代码如图15所示。
图15适配器与数据绑定
从图15中可以看出,clubList是FootballClub对象的List集合,之后通过add()方法添加6个数据,图15①中的数据是足球俱乐部队徽的资源ID,图15②中的数据是对应的足球俱乐部名字。最后,创建自定义适配器FootballClub_Adapter的对象adapter,将适配器adapter与数据clubList绑定。
4.2 适配器与ListView绑定
适配器与数据绑定的代码如图16所示。
图16 适配器与数据绑定
其中,lv是ListView类的对象,activity_main_lv1是主界面中ListView控件的ID。通过setAdapter()方法将适配器adapter与ListView控件lv绑定。