我试图在arraylist中保存一些值,但不知怎的,它们都被覆盖,结果只有arraylist(200)中的1个值。
final String[] titles = new String[urls.length];
for (int i = 0; i < titles.length; i++){
ArrayList<Integer> valuesList = new ArrayList<Integer>();
valuesList.add(page.getTopicCount()); // returns 4 values (50,100,150,200)
System.out.println("Element: " + valuesList.toString());
// returns only value 200
}
代码page.getTopicCount()
返回1行(50 100 150 200)中的4个值,只有最后一个(200)被添加到arraylist但我试图找到一种方法将它们全部4分别保存。
我有哪些选择? (SharedPreferences,保存到文件,我是否必须构建另一个循环)?
我已经做了一些研究并最终登陆this页面,但我不知道这是否有效。
Ps:4个值不断变化,因此无法将它们添加为:
valuesList.add("50");
valuesList.add("100");
etc..
编辑: getTopicCount是Saxparser类的一部分,请参见下面的代码片段:
public void endElement(final String uri, final String localName, final String qName)
throws SAXException {
//
} else if (localName.equals("topiccount")) {
in_topiccount = true;
sb = new StringBuilder();
}
//
else if (localName.equals("topiccount")) {
in_topiccount = false;
forumPage.setTopicCount(Integer.parseInt(sb.toString())); //returns 50 100 150 200
sb = null;
}
//
}
答案 0 :(得分:2)
在for循环中,您正在初始化 valuesList ArrayList。因此,每次迭代时,您都会创建一个新的ArrayList并向其添加一个元素,然后将其丢弃。因此,最后您只能引用您创建的最后一个ArrayList,其中只能包含200个。
大概你想要做的是:
ArrayList<Integer> valuesList = new ArrayList<Integer>();
for (int i = 0; i < titles.length; i++){
valuesList.add(page.getTopicCount()); // returns 4 values (50,100,150,200)
}
System.out.println("Element: " + valuesList.toString());
编辑:基本上,创建一次ArrayList,然后在for循环中将元素插入其中。