Android中有一种 “高级” 控件,之所以 “高级”,是因为,他的实现过程类似于MVC框架,数据和视图是分开的,不像其他控件,拖过来就能用,这一种控件就是AdapterView类控件,AdapterView又分为几中,常用的有ListView,Spinner,GridView。ListView是我们平时最常用的一种。我们经常有这样的需求,简单的展示列表信息,或者展示信息并且要有点击交互等。ListView通常的作用就是这两个:
1、展示信息到布局文件(通常是列表信息)
2、处理用户的点击选择等事件
一、展示信息
使一个LIstView工作通常需要三个元素:
1、展示数据的控件,ListView中每一列的view,(通常是一个单独的布局文件)
2、展示的数据,要填充到view的数据信息
3、连接数据与ListView的适配器(Adapter)
从上面三个元素可以看出,要熟练的使用ListView,还是要详细的了解适配器。常用的适配器大致有四种:BaseAdapter(通用的基础适配器)、ArrayAdapte、SimpleAdapter(绑定在xml布局文件中定义的控件对应的数据)、SimpleCursorAdapter(绑定游标得到的数据)。除了这四种,还有好多适配器,各种适配器转换数据的方式和能力各不一样。
1、ArrayAdapter
绑定一个数组,支持泛型操作
ArrayAdapter使用非常简单,首先在布局文件中增加一个ListView控件,并设置控件宽、高、id等属性。例如:
<ListView android:id="@+id/lview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
然后再Activity中初始化
String[] strs =newString[] { "first", "second", "third", "fourth", "fifth" };
lview = (ListView) findViewById(R.id.lview);//得到ListView对象的引用
/*为ListView设置Adapter来绑定数据*/
lview.setAdapter(newArrayAdapter(this, android.R.layout.simple_list_item_1, strs));
ArrayAdapter的参数有三个,其中第一个参数是当前上下文,第二个参数是ListView子项布局的id,第三个参数是要绑定的数据。其中第二个参数android.R.layout.simple_list_item_1是Android内置的布局文件,这个布局文件中只有一个TextView用来简单的显示一段文本。setAdapter方法的作用是将建好的适配器对象ArrayAdapter传递给ListView。
2、SimpleAdapter
SimpleAdapter的功能要比ArrayAdapter的功能强大的多,可以显示图片,文字,选择框等多种需求。SimpleAdapter的数据源只能是List<Map<"键","值">>形式的数据。
SimpleAdapter使用方法:
首先在布局文件中增加ListView控件,这里不展示代码。然后要增加一个定义ListView中每一项的布局文件,布局文件中的控件及展示,可以根据自己的需要定义。最后在java代码中为ListView绑定数据。例如:
ListView lview = (ListView) findViewById(R.id.lview);
/*定义一个动态数组*/
ArrayList<HashMap<String,Object>> listItem = newArrayList<HashMap<String,Object>>();
/*在数组中存放数据*/
for(inti=0;i<10;i++) {
HashMap map =newHashMap();
map.put("ItemImage", R.drawable.icon);//加入图片
map.put("ItemTitle", "第"+i+"行");
map.put("ItemText", "这是第"+i+"行");
listItem.add(map);
}
SimpleAdapter mSimpleAdapter =newSimpleAdapter(this,listItem,R.layout.item,
newString[] {"ItemImage","ItemTitle", "ItemText"},
newint[] {R.id.ItemImage,R.id.ItemTitle,R.id.ItemText});
lview.setAdapter(mSimpleAdapter);//为ListView绑定适配器
listItem为要绑定到ListView中的数据,mSimpleAdapter为适配器。定义适配器的构造方法一共有5个参数。参数1:当前上下文;参数2:要绑定的数据;参数3:为listview定义的每一项的布局文件;参数4:要绑定的数据的键值;参数5:要绑定的控件的id;其中参数4和参数5一般情况下是对应的,例如该例中,数组listItem中的项ItemImage
要绑定到对应id为R.id.ItemImage的控件中。
到这里ArrayAdapter和SimpleAdapter的简单内容完毕,因为篇幅太长,下篇为BaseAdapter与ListView的基本知识与优化。