避免这种价值被覆盖'在arraylist

时间:2015-01-03 00:21:08

标签: android arrays arraylist sharedpreferences

我试图在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;
    }
// 
}

1 个答案:

答案 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循环中将元素插入其中。