6. List
一个list是一个包含一系列可选项的screen。List和ChoiceGroup具有Choice 接口定义的一些共同的特性。用户可以通过一项项地移动与该list交互。注意,高级API交互并不激发任何回馈到应用程序的事件。这仅在作出一选择时发生。
可用List类来创建List的实例:
public List(String title, int listType); public List(String title, int listType, String[] stringElements,Image[] imageElements); |
第一个构造器用来创建一个空的list,不过可以指定标题和list类型。针对第二个参数,有3种类型列表可以选择: IMPLICIT, EXCLUSIVE和MULTIPLE。这些选项能被使用List类实现的Choice接口提供的常数来指定:
·EXCLUSIVE类型的list,一次仅有一个选项,与AWT中的一组单选按钮很相似。
·IMPLICIT类型的list,提供一种互斥的选项,此时焦点选项是隐式选择的,很象一个下拉菜单。
·MULTIPLE类型的list,一次可以提供任意数目的选项,以一系列复选框形式显示。
例如,下面语句生成一个EXCLUSIVE类型的list,标题是"Choose one"。
List list = new List("Choose one", Choice.EXCLUSIVE); |
一旦你创造了一空列表,你就能插入,添加或在列表中进行选择替换。每个选择都有在列表中代表它的位置的一个整数索引。第一选择从0开始,直到的当前大小减一为止。为此,List类提供了下面一些方法:
public int append(String stringElement, Image imageElement); public void insert(int index, String stringElement, Image imageElement); public void set(int index, String stringElement, Image imageElement); |
注意选择由一个文本串和一可选的图像组成。例如,下面介绍如何把一些选择添加到前面的列表中去。注意append( )方法返回与该选项相关的已经传入的索引值,以备后面还需要它。
int saveIndex = list.append("save", null); int deleteIndex = list.append("delete", null); |
你能使用下列方法删除列表的任何索引:
public void delete(int index); |
如果你想要检索对应任何索引值的文本元素或图像元素,下列方法可以实现:
public String getString(int index); public Image getImage(int index); |
如果你想要设定,取消设定,或在列表检索当前被选择项的索引,或查询任何索引以判断是否它是当前被选中的,可以使用下列方法:
public int getSelectedIndex( ) public boolean isSelected(int index); public setSelectedIndex(int index, boolean selected); |
最后,你可以使用一个布尔数组来设置整个列表的选定状态。这是典型的选项标志法,可以用下面的方法来存取。注意getSelectedFlags( )方法并不返回一个布尔数组,而是作修改(并返回以整数形式返回被选择的元素的数目);这是一种典型的优化技术,以防止在每次调用该方法时新建一个数组。该数组至少应该有同列表中元素数目一样的长度。如果更长了,超出相应长度的元素置为false。
public int getSelectedFlags(boolean[] selectedArray); public void setSelectedFlags(boolean[] selectedArray); |
对MULTIPLE型列表,setSelectedFlags( )方法设置列表中每个元素的状态。对EXCLUSIVE 型或者IMPLICIT型列表,在布尔数组中,只有一个元素被设置为true;如果没有元素为true,那么第一元素将被选择。如果有两个或者多个元素为true,系统将选择第一个为true的元素并选中它。
让我们看一些列表组件的例子。下面代码生成一个EXCLUSIVE型列表:
Display display = Display.getDisplay(this); List menu = new List("Edit", Choice.EXCLUSIVE); menu.append("Save"); menu.append("Move to"); menu.append("delete"); display.setCurrent(menu); |
在该列表中,仅可选择一选项,见图7。
 图 7.一个具有互斥选择的列表的例子 |
如果你把列表类型设为IMPLICIT,结果将如图 8所示。注意这里的单选按钮已经去掉。
 图 8.一个具有隐式选择的列表的例子 |
还是与EXCLUSIVE 类型一样,在该列表中,仅可选择一项;但是,焦点选项是隐式选择好的。第三种类型MULTIPLE的情况,如图 9示。
 图 9.一个具有多选择列表的例子 |
如我们以前提及,在一个list中的选项由索引所参照,它们是0到size( ) - 1间的连续整数。0指向第一个选项,size( ) - 1指向最后一个选项。例如,可以如图8的方法来删除"Move To"选项:
在此,我们使用第二个列表构造器来创建一列表,指定它的标题,列表的类型,一个字符串和一个图像串用作它的初始内容。下列代码创造一个有两个初始的选择但没有图象的列表:
List list2 =new List("Make a selection",Choice.EXCLUSIVE,{"Add", "Delete"},null); |
在列表的元素的个数由传递给构造器的数组stringElements(不能为null)的长度所决定。但是,数组imageElements可以是null。然而,如果该数组不是null,它的长度必须与stringElements一致。
查看本文来源