2012-08-06 19 views
2

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

这里我详细的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? 
+0

斐伊川卡莱的,我已经改变了我的代码,它是好的干活....在这里我的代码... public void actionPerformed(ActionEvent ae){List source =(List)ae.getSource(); 尝试{ News selectedNewsItem =(News)source.getSelectedItem(); System.out.println(“selectedIndex”+ selectedNewsItem.getDescription()); if(selectedNewsItem!= null){displayCompleteNewsScreen(selectedNewsItem); – String 2012-08-08 05:30:40

回答

2

添加的动作侦听器到列表中。仅当您单击列表中的任何项目时才会调用它。在该动作侦听器中,获取选定的项目并将其转换为News类对象,因为您在列表中添加了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,你可以在其它的画面显示的相关数据。向它添加后退命令。在后退命令中,只显示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(); 
+0

在form2对象中,我想添加发布日期和一些说明,然后我想显示我的详细表单,例如(PubDate:Tue,o7 aug和Description:这里是来自News对象的一些文本)? – String 2012-08-07 06:28:43

+0

我已经在allNewsClassObjs对象中拥有发布日期和描述值,但是如何在form2上显示它?我使用过这样的标签pubdate = new Label(); pubdate.setText(detailNews.getPubDate()); form2.addComponent(pubdate); form2.addCommand(m_backCommand);什么是正确的方法? – String 2012-08-07 06:34:56

+0

这是正确的。你能行的。 – 2012-08-07 06:38:56