我无法显示特定于用户在 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/