2014-04-06 36 views
0

我一直在解析html以获取特定链接的标题。我能够将此字符串添加到字符串数组中,但我想从位于我的strings.xml资源中的字符串数组中添加一个字符串。从strings.xml向ArrayList添加字符串

int i = 1; 
String time = null; 
for (Element title : rels) { 
    time = getResources().getStringArray(R.array.times)[i]; 
    titleArray.add(time + title.attr("title")); 
    i++; 
} 

这里是我的字符串资源:

<string-array name="times"> 
    <item name="1">12:00 am</item> 
    <item name="2">12:30 am</item> 
    <item name="3">1:00 am</item> 
    <item name="4">1:30 am</item> 
    <item name="5">2:00 am</item> 
</string-array> 

我得到这个错误的logcat:

04-06 01:44:08.837: E/AndroidRuntime(30938): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=48; index=48 

我在这个字符串数组,这是完全一样的48串我从html解析的字符串数量。我不确定为什么我的应用程序正在强制关闭。有人知道吗?

+0

你试图开始INT I = 0; ? – bgth

回答

3

数组的下标从0开始不1.更改i0开始:

int i = 0; 
+0

我没有尝试过,但我的数组从1开始。我是否应该将数组中的项目名称更改为0? – Grux

+1

@Josh你的数组从0开始。另外,“item”上的“name”属性没有任何作用。请参阅http://developer.android.com/guide/topics/resources/string-resource.html#StringArray(注意“item”没有属性)。 –

+0

我现在意识到名称属性是多余的。试图自学java,我没有意识到像所有字符串数组都有自己的索引(从0开始)。感谢您的评论和链接。这非常有帮助。 – Grux

1

你的循环应该从0开始的索引

int i = 0; 
    String time = null; 
    for (Element title : rels) { 
     time = getResources().getStringArray(R.array.times)[i]; 
     titleArray.add(time + title.attr("title")); 
     i++; 
    }