Как идентифицировать элемент списка на экране формы lwuit?

я не могу отобразить подробную информацию о форме, относящуюся к заголовку, который пользователь щелкнул на экране формы 1, когда я нажимаю на любой список элементов на экране формы 1, я могу отображать сведения только о первом элементе (в моем коде 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?

person String    schedule 06.08.2012    source источник
comment
Привет, калай, я изменил свой код, он работает нормально... вот мой код... public void actionPerformed(ActionEvent ae) { List source = (List) ae.getSource(); try { Новости selectedNewsItem = (Новости) source.getSelectedItem(); System.out.println(selectedIndex + selectedNewsItem.getDescription()); if (selectedNewsItem != null) { displayCompleteNewsScreen (selectedNewsItem);   -  person String    schedule 08.08.2012


Ответы (1)


Добавьте прослушиватель действий в список. Он вызывается, только если щелкнуть любой элемент списка. В этом прослушивателе действий получите выбранный элемент и приведите его к объекту класса News, потому что вы добавили объекты класса News в список. Из этого объекта получите уникальное свойство, такое как идентификатор новости. Передайте его на другой экран с текущим объектом формы (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();

С идентификатором новости вы можете отображать связанные данные на другом экране. Добавьте к нему команду возврата. В команде «Назад» просто покажите объект 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();
person Kalai Selvan Ravi    schedule 07.08.2012
comment
в объекте form2 я хочу добавить дату публикации и некоторое описание, а после этого я хочу показать свою подробную форму, например, (PubDate: Tue, o7 aug и Description: какой-то текст здесь из объекта новостей)? - person String; 07.08.2012
comment
у меня уже есть значения даты публикации и описания в объекте allNewsClassObjs, но как показать это в форме2? Я использовал вот так Label pubdate=new Label(); pubdate.setText(detailNews.getPubDate()); form2.addComponent (публикация); form2.addCommand(m_backCommand); какой правильный метод? - person String; 07.08.2012
comment
а также, я хочу отобразить текст абзаца и дату публикации с заголовком (Описание: вот так) в моей подробной форме, если я использую вот так, Label pubdate=new Label(); pubdate.setText(detailNews.getPubDate()); form2.addComponent (публикация); form2.addCommand(m_backCommand); я не могу отобразить заголовок, и я могу отобразить только однострочный текст с точками.......? - person String; 07.08.2012
comment
Используйте TextArea для отображения текста абзаца. - person Kalai Selvan Ravi; 07.08.2012
comment
давайте продолжим это обсуждение в чате - person String; 07.08.2012