日期:2014-05-20  浏览次数:20562 次

通过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技术的