可以通过List类实现列表窗口。List包含在
javax.microedition.lcdui 包中,父类为Screen
------------------------------------------------------
列表窗口的类型
列表窗口包括一些选项,这些选项的类型可以分为隐式类型、单选类型、多选类型.
List类的构造函数有两个:
构造函数一:
语法:
public List(String title,int listType)
参数: title是空列表的标题。
listType是列表选项的类型或称列表的类型。
有三种类型:
IMPLICIT(互斥的,通过隐式按钮实现)
EXCLUSIVE(单选)和
MULTIPLE(多选)。
------------------------------------------------------------------
列表窗口的类型
构造函数二:
语法:
public List(String title, int listType,
String[] stringElements,
Image[] imageElements)
StringElements是字符串数组,可以指定具体的列表选项。
imageElements可以指定具体的列表选项以及列表选项的图标。
--------------------------------------------------------------------
单选按钮EXCLUSIVE
常量List.EXCLUSIVE,表示单选按钮。
public ListImplicitTest () {
command1 = new Command("确定",Command.OK,1);
command2 = new Command("退出",Command.EXIT,1);
command3 = new Command("返回",Command.BACK,1);
list = new List("hello", List.EXCLUSIVE,ima,null);
}
---------------------------------------------------------------------
MULTIPLE
public ListImplicitTest () {
// TODO Auto-generated constructor stub
command1 = new Command("确定",Command.OK,1);
command2 = new Command("退出",Command.EXIT,1);
command3 = new Command("返回",Command.BACK,1);
list = new List("hello", List.EXCLUSIVE,ima,null);
}
---------------------------------------------------------------------
获得被选中的内容
隐式类型的列表窗口
在隐式类型的列表窗口中选项的选择是隐式进行的。用户可以在命令按钮事件的处
理函数中可以获得被选中的选项。在List类中提供了一个静态成员命令常量
SELECT_COMMAND,该命令按钮是作为默认的隐式命令按钮,当用户按下选择键
后会触发该命令按钮的动作。
public static final Command SELECT_COMMAND
SELECT_COMMAND命令按钮的标签为空;优先级为0;类型为SCREEN或
ITEM。
------------------------------------------------------------------------------
多选类型的列列表窗口
获得多选类型列表的值可以使用如下步骤
获得被选中选项的索引。
int index = this.lstImplicit.getSelectedIndex();
获得被选中选项的内容
Sstring str = this.lstImplicit.getString(index);
显示在标题中
this.lstImplicit.setTitle(“Item:’””+str+”’is selected”);
-----------------------------------------------------------------------------------
package com.feifei.list;
import java.io.IOException;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.List;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class TestList extends MIDlet implements CommandListener{
Display dis;
List list;
Image img;
Image[] imags;
Command add,del;
public TestList() {
dis=Display.getDisplay(this);
try {
img=Image.createImage("/img/5.png");
imags=new Image[]{img,img,img};
} catch (IOException e) {
e.printStackTrace();
}
String[] str= new String[]{"上海","武汉","北京"};
//隐式
//list=new List("添加",List.IMPLICIT,str,imags);
//多选
list=new List("添加",List.MULTIPLE,str,imags);
add=new Command("增加",Command.OK,1);
del=new Command("删除",Command.BACK,1);
list.setCommandListener(this);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
list.addCommand(add);
list.addCommand(del);
dis.setCurrent(list);
}
//事件
public void commandAction(Command c, Displayable d) {
if(c==add){
//隐式或单选的 List添加函数
// addToList();
// 多选List:增加的第一种方法
// addMutilList1();
// 多选List:增加的第二种方法
addMutilList2();
}else if(c==del){
// 隐式或单选的 List删除函数
// delToList();
//全部删除
// 多选List :删除
// this.delAllList();
delMultiList();
}
}
//单选
public void addToList(){
int index=list.getSelectedIndex();
String str=list.getString(index);
System.out.println(str);
list.append(str, img);
}
//单选删除
public void delToList(){
int index=list.getSelectedIndex();
list.delete(index);
}
//删除全部
public void delAllList(){
list.deleteAll();
}
//多选List:增加的第一种方法
public void addMutilList1(){
for(int i=0;i<list.size();i++){
//该项是否被选种
if(list.isSelected(i)){
String str=list.getString(i);
list.append(str, img);
}
}
}
//多选 List :添加的二种方法
public void addMutilList2(){
boolean[] flags=new boolean[list.size()];
list.getSelectedFlags(flags);//得到List 当中的所有选种的索引
for(int i=0;i<list.size();i++){
if(flags[i]){
String str=list.getString(i);
list.append(str, img);
}
}
}
//多选List :删除
public void delMultiList(){
for(int i=list.size()-1;i>=0;i--){
if(list.isSelected(i)){
list.delete(i);
}
}
}
}