如何控制多个 Rss 文件的流

Posted

技术标签:

【中文标题】如何控制多个 Rss 文件的流【英文标题】:How to control flow of multiple Rss Files 【发布时间】:2012-08-16 14:11:31 【问题描述】:

我使用 LWUIT j2me(java) 为 2 个 xml 文件开发了 RssFeed 应用程序,现在我想在 LWUIT 选项卡上显示这 2 个 xml 文件。

这意味着,当我的应用程序运行时,将显示默认选项卡(在该选项卡上应显示我的第一个 Rss xml 文件标题),并且当用户单击 tab2 时,应显示我的第二个 Rss xml 标题。

我可以在两个选项卡上显示一个 rss 文件的相同标题,如何控制我的流程以完成我的任务?

这是我的代码:

public class XMLMidlet extends MIDlet implements ActionListener 

    public XMLMidlet() 
        Display.init(this);
        news = new Vector();
        m_backCommand = new Command("Back");

        cmdExit = new Command("EXIT");
        cmdDetails = new Command("Details");
    

    public void startApp() 
    //RssFeed URL's     
   String urls[] = "http://topnews-23.rss",
      "http://topstory-12.rss";

  for(int i=0;i<urls.length;i++)
        ParseThread myThread = new ParseThread(this,urls[i]);
        //this will start the second thread
        myThread.getXMLFeed(urls[i]);
            
    

     //method called by the parsing thread

    public void addNews(News newsItem,String url) 
        try
        news.addElement(newsItem);
        form1 = new Form();

        myNewsList = new List(newsVector);
        newsList    =new List(newsVector);
        myNewsList.setRenderer(new NewsListCellRenderer());
        newsList.setRenderer(new NewsListCellRenderer());

        tabs=new Tabs(Component.TOP);

        tabs.addTab("TopNews", myNewsList);

        tabs.addTab("Topstory",newsList);

        form1.addComponent(tabs);
        form1.show();
  

        catch(Exception e)
       e.printStackTrace();     


【问题讨论】:

【参考方案1】:

你应该移到下面的代码

myNewsList = new List(newsVector);
newsList    =new List(newsVector);
myNewsList.setRenderer(new NewsListCellRenderer());
newsList.setRenderer(new NewsListCellRenderer());
tabs=new Tabs(Component.TOP);
form1 = new Form();
tabs=new Tabs(Component.TOP);
tabs.addTab("TopNews", myNewsList);
tabs.addTab("Topstory",newsList);

addNews 方法到构造函数XMLMidletaddNews 方法应使用 url 参数来区分 newsItem 指向的列表。

更新

以下是我认为你应该如何实现addNews 方法:

public void addNews(News newsItem, String url)  
  if (url.endsWith("topnews-20.rss")) 
    myNewsList.addElement(newsItem);
   else if (url.endsWith("topstory-25.rss")) 
    newsList.addElement(newsItem);
  

serRenderer 不需要从addNews 调用,form1.show() 应该移动到startApp

【讨论】:

以上是关于如何控制多个 Rss 文件的流的主要内容,如果未能解决你的问题,请参考以下文章

在php进程之间的流中传递多个文件

具有多个提要和组的 Mailchimp RSS 活动

如何在一个容器中底部对齐多个 inline-block div 而不会丢失它们的流?

php 检索多个RSS源

从Node.js Stream写入多个文件

从一个发件人控制多个 Chromecast 接收器?