Android中的列表,当然也可以用ListView来完成所需要的功能,用法是一样的。
废话不说,来关键的。
LiveActivity本身继承了关于List操作的众多接口,我们可以方便的重写这些操作中需要的方法来实现自己需要的功能。
如果要用ListActivity,则Activity的Layout文件中必须包括一个(只能一个)ListView,且ListView的id="@id/android:list"。
如下代码,一个标准的ListActivity Layout文件:
请注意 ListView与TextView的id。前面说了,ListView的Id为固定不变的,为”@./idandroid:ost”,ListActivity会根据id自动查找ListView引用;但如果当ListView中没有值而又想提示一句话时,那么用于指定显示提示信息的TextView的id必须为”"@id/android:empty",提示的信息可以通过android:text进行指定。
OK,关于如何布局说完了,那么如何给List绑定值,并进行操作呢?
首先我们需要确实的是,ListView的布局也完成了,并通过调用setContentView(…)进行了绑定,但直到现在我们还没有确定ListView中的第一行显示的格式是什么,是直接显示文字还是要“图文并茂”的显示。
Android系统为我们提供了多种模板进行选择(android.R.layout),如
ØSimple_list_item_1每项有一个TextView
ØSimple_list_item_2每项有两个TextView
ØSimple_list_item_checked带CheckView的项
ØSimple_list_item_multiple_choise每项有一个TextView并可以多选
ØSimple_list_item_single_choice每项有一个TextView,但只能进行单选。
但然,如果以上项模板还无法满足你的要求,那只能自定义模板了(相当简单,就是定义一个layout布局)。如果你做的asp.net的开发的话,是否对dataList控件有印象呢。如果对DataList有印象,那么理解ListView也就相当的简单了。
自定义模板可以根据自己的需要定义成任意的格式,包括图片、方案及其他可显示的View,不用多说,自己定义就好了,关键是如果使用并进行模板的绑定。
如何要对ListView进行数据绑定,必须使用到一个接口:Adapter。
其中最经常与ListView进行配合使用的有ArrayAdapter、CursorAdapter及SimpleAdapter等。
从名称可以看出ArrayAdapter使用的是一个ArrayAdapter做为数据源,SimpleCursorAdapter使用的是一个Cursor使用数据源,都比较容易理解,那么如何使用SimpleAdapter作为数据的适配器呢。Ok,从易到难。
SimpleAdapter将一个List做为数据源,可以让ListView进行更加个性化的显示。而List中的第一项是个Map<String,?>(用到泛型),其中Map中的每项将与ListView中的每项进行一一对应绑定。Ok,看一下构造:
SimpleAdapter(Context context,List<? Extends Map<String,?>> data,int resource,String [] form, int [] to);
Context:当前上下文,一般把Activity.this传递进行。
Data:数据源。
Resource:自定义的layout模板资源,可以用R.layout.xxx获取引用。
Form:定义ListView中的每一项数据索引,索引来自于Map<String,?>,即指定要显示的内容。
To:View数组,在ListView模板中的定义View,与Form中需要一一对应。
事例代码:
以上代码使用了Hashtable做为一个Map,并添加到一个List<Hashtable<String, Object>>当中。
之后new一个SimpleAdapter,注意SimpleAdapter是如何生成的。