基于Java语言的安卓编程之十六ListView控件1(下)

时间:2022-04-11 01:37:36

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每个子项的数据、布局以及布局中各控件显示的内容。