通过for循环打印的StringItem都响应按键,按键后能获取局部变量,怎么做?
大概的显示是这样的:
第1条搜索结果:aaa(这是一个StringItem超链接型的字符串)
第2条搜索结果:bbb(这是一个StringItem超链接型的字符串)
......
用户选择其中的一个搜索结果(光标放在aaa处),然后点击右下角进入按键。。。
代码如下:
//先从服务器接收总共有多少个web服务
int totalResult=ds.readInt();
//以下信息为从Web服务器所接收到的每条详细信息
for(int i = 0;i <totalResult;i++){
serviceID=ds.readLong();
servicename=ds.readUTF();
//setServiceID(serviceID);这样做也不行
stringItem=new StringItem( "第 "+(i+1)+ "条搜索结果: ",servicename,javax.microedition.lcdui.Item.HYPERLINK);
stringItem.addCommand(okCommand);
stringItem.setItemCommandListener(this);
result.append(stringItem);
}
public void commandAction(Command command, Item item) {
//目前的问题是如何接收那个关键IDserviceID,然后传到
//getEnterServiceInfor(...)做实参,进一步处理
// getEnterServiceInfor(serviceID)
}
}
现在的问题是无论用户选择的是哪个Item,最后到commandAction里的还是对应的for循环的最后一个,即i=totalResult-1,long serviceID=对应最后一个搜索结果的ID,
怎么捕获用户选择的那个web服务的ID呢?
大家看看怎么实现,谢谢大家帮忙。
------解决方案--------------------使用额外的变量来记录不就行了么?
给一个解决方案
Vector IDs=new Vector();//存储ID
int currentIndex;//记录当前选择的Item的序号
刷新时
IDs.addElements(new Long(..));//将刷新得到的ID存入Vector
事件处理
long id=((Long)IDs.elementAt(currentIndex)).longValue();
------解决方案--------------------或者 考虑到 第 "+(i+1)+ "条搜索结 这样的显示结果
long id=((Long)IDs.elementAt(Integer.parseInt(label.substring(1,2))-1))
------解决方案--------------------推荐给楼主一个案例,SmartTicket 2.0
http://www.j2medev.com/bbs/dispbbs.asp?boardid=17&ID=16754&replyID=68083
今天刚看到了,昨晚听了楼主项目一些细节,觉得和这个有些类似。可以看看
他是基于J2ME和J2EE技术的