我正在编写一个程序,允许用户提供RSS源的URL,下载和解析信息,然后将其显示到JTextArea
。
我有一个ArrayList(ArrayList)= categoryList。它的每个项目都是category = ArrayList。 Feed对象包含一个返回ArrayList的getContents()方法。
我想将每个Feed与JTextArea相关联。然后我想迭代FeedItems,同时在相应的JTextArea中显示它们。
我真的很难找到一种在Feed< =>之间关联一对一地图的方法。 JTextArea中。
这是我的尝试:
if (category_list.size() > 0)
{
final java.util.Iterator<ArrayList<Feed>> categoryListIterator = category_list.iterator();
final ArrayList<Feed> currCategory;
final java.util.Iterator<Feed> currFeedIterator;
while (categoryListIterator.hasNext())
{
currCategory = categoryListIterator.next();
while (((java.util.Iterator<ArrayList<Feed>>) currCategory).hasNext())
{
ArrayList<Feed> currFeed = ((java.util.Iterator<ArrayList<Feed>>) currCategory).next();
currFeedIterator = currFeed.iterator();
while (currFeedIterator.hasNext())
{
Feed feed = currFeedIterator.next();
final java.util.Iterator<FeedItem> feedIterator = feed.getContents().iterator();
while (feedIterator.hasNext())
{
// find the appropriate JTextArea
// iterate through the articles.
correspondingJtextArea.setText(feedIterator.next().toString());
}
}
}
}
}
请让我知道,跟踪JTextArea
我应该更改文字的最佳方法是什么。
我是否在这里正确地遍历所有Feed? 一个说明我情况的简短例子非常有帮助。
更新:
好的,现在我可以遍历所有的Feed。我只需要找到一种方法来编写一个将Feed与JTextArea相关联的HashMap。
答案 0 :(得分:1)
是否有与每个Feed相关的标识?如果是,您可以使用带有键作为id和值的HashMap作为JTextArea对象。如果不是,则可以为每个订阅源创建自定义ID,并使用HashMap进行关联。 关于迭代您的Feed,您需要使用循环而不是ifs。
public static JTextArea getTextAreaByFeedId(int id)
{
JTextArea correspondingJtextArea = id_txtareaMap.get(id);
if(correspondingJtextArea == null)
{
correspondingJtextArea = new JTextArea();
id_txtareaMap.put(id, new JTextArea());
}
return correspondingJtextArea;
}
// Reads in an array of integers, sorts them,
// then prints them in sorted order.
public static void main (String[] args) {
HashMap<Integer, JTextArea> id_txtareaMap = new HashMap<>();
if (category_list.size() > 0)
{
final java.util.Iterator<ArrayList<Feed>> categoryListIterator = category_list.iterator();
final ArrayList<Feed> currCategory;
final java.util.Iterator<Feed> currFeedIterator;
while (categoryListIterator.hasNext())
{
currCategory = categoryListIterator.next();
while (((java.util.Iterator<ArrayList<Feed>>) currCategory).hasNext())
{
ArrayList<Feed> currFeed = ((java.util.Iterator<ArrayList<Feed>>) currCategory).next();
currFeedIterator = currFeed.iterator();
while (currFeedIterator.hasNext())
{
Feed feed = currFeedIterator.next();
final java.util.Iterator<FeedItem> feedIterator = feed.getContents().iterator();
while (feedIterator.hasNext())
{
// find the appropriate JTextArea
// iterate through the articles.
JTextArea correspondingJtextArea = getTextAreaByFeedId(FeedItem.getId());
correspondingJtextArea.setText(feedIterator.next().toString());
}
}
}
}
}
}