java-me - 如何识别lwuit表单屏幕中的列表项?

标签 java-me lwuit-form

我无法显示特定于用户在 form1 屏幕上单击的标题的详细表单信息,当我单击 form1 屏幕上的任何项目列表时,我只能显示第一个项目的详细信息(在我的代码 int index 中) =myNewsList.getSelectedIndex() 始终返回 0 作为值)

这是我的 Rss 应用程序的详细代码:

                     //method called by the parsing thread
                      public void addNews(News newsItem) { 
                       newsVector.addElement(newsItem);//initialsed list with vector
                       myNewsList = new List(newsVector);                                    
                       myNewsList.setListCellRenderer(new NewsListCellRenderer());        
                       form1.addComponent(myNewsList);                  
                       form1.show();
                       myNewsList.addActionListener(new ActionListener() {
                         public void actionPerformed(ActionEvent ae) {
                        int selectedIndex = myNewsList.getSelectedIndex();
                        if(selectedIndex != -1){
                             newsItem1 = (News)news.elementAt(selectedIndex);
                             Label l=new Label();
                             l.setText(newsItem1.getPubDate());
                             Form detailedForm=new Form();
                             detailedForm.addCommand(m_backCommand);
                             detailedForm.addCommandListener(this);
                             detailedForm.addComponent(l);
                             detailedForm.show();                   
                       }                   

                       }
                    });                  
                    }

     Can you help?

最佳答案

将操作监听器添加到列表中。仅当您单击列表中的任何项目时才会调用它。在该操作监听器中,获取所选项目并将其转换为 News 类对象,因为您已在列表中添加了 News 类对象。从该对象中获取唯一属性,例如新闻 ID。将其传递到具有当前表单对象 (form1) 的另一个屏幕。

myNewsList = new List(news);
myNewsList.setListCellRenderer(new NewsListRenderer());

myNewsList.addActionListener(new ActionListener() {

     public void actionPerformed(ActionEvent ae) {
           News allNewsClassObjs = (News) myNewsList.getSelectedItem();
           int newsid = allNewsClassObjs.getNewsId(); 
           displayCompleteNewsScreen(form1,newsid);
     }
});
form1.addComponent(myNewsList); 
form1.addCommand(cmdDetails);
form1.setScrollable(true);
form1.setTransitionInAnimator(Transition3D.createRotation(250, true));
form1.show();

通过新闻id,您可以在另一个屏幕上显示相关数据。向其中添加返回命令。在 back 命令中,只显示 form1 对象。

public void displayCompleteNewsScreen(Form form1,int newsid){

// Get the related data and add it to another form object(form2).

form2.addCommand("Back");
form2.addCommandListener(new ActionListener() {

         public void actionPerformed(ActionEvent ae) {
               form1.show();
         }
    });
form2.show();
}

而不是使用

int selectedIndex = myNewsList.getSelectedIndex();
if(selectedIndex != -1){
newsItem1 = (News)news.elementAt(selectedIndex);
}

使用下面的代码

newsItem1 = (News)myNewsList.getSelectedItem();

关于java-me - 如何识别lwuit表单屏幕中的列表项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11833728/

相关文章:

java - String赋值会导致内存泄漏吗?

java - 调用 midlet jar 将数据检索到 python 代码中

java - 2G 或 3G 数据 API

java - LWUIT 中的文本字段 is Visible() 函数无法按预期工作

java-me - 在 sun java wireless toolkit 2.5.2 中按数字键时如何创建弹出窗口?

java - j2me中的canvas和form有什么区别?

java - 在 Java ME 中将 "America/Los Angeles"时区转换为 "PST"或 "PDT"

java-me - 如何使用 LWUIT 在标签中添加换行符?

java-me - 当我使用我的 java me 应用程序时,如何使通知栏可见(电池信息、时钟等)?