2012-08-06 22 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