在我正在编写的应用程序中,我正在将XML加载到Java String []中,然后将每个项目转换为对象并将这些项目添加到对象数组中。
以下是我的代码:
Java部分,带有do-while循环
ArrayList<ExpandListGroup> list = new ArrayList<ExpandListGroup>();
ArrayList<ExpandListChild> list2 = new ArrayList<ExpandListChild>();
ExpandListGroup gru1 = new ExpandListGroup();
gru1.setName(getString(R.string.album_vancouver));
String[] tempArray = getResources().getStringArray(R.array.album_array_vancouver);
int count = 0;
int max = tempArray.length;
do {
ExpandListChild ch = new ExpandListChild();
ch.setName(tempArray[count]);
ch.setTag(null);
list2.add(ch);
} while(count <= max);
gru1.setItems(list2);
list.add(gru1);
XML中的数组
<string name="album_vancouver">Vancouver</string>
<string name="song_vancouver_1">Future Wars</string>
<string name="song_vancouver_2">A Word Of Welcome And Of Warning</string>
<string name="song_vancouver_3">See You In Vancouver</string>
<string name="song_vancouver_4">To Withstand The Force Of Storms</string>
<string name="song_vancouver_5">He Is Here, He Is Not Afraid</string>
<string name="song_vancouver_6">The Surgeon And The Scientist</string>
<string name="song_vancouver_7">Fairmount</string>
<string name="song_vancouver_8">Untitled</string>
<string-array name="album_array_vancouver">
<item>@string/song_vancouver_1</item>
<item>@string/song_vancouver_2</item>
<item>@string/song_vancouver_3</item>
<item>@string/song_vancouver_4</item>
<item>@string/song_vancouver_5</item>
<item>@string/song_vancouver_6</item>
<item>@string/song_vancouver_7</item>
<item>@string/song_vancouver_8</item>
</string-array>
我在运行时在“list2.add(ch)”行获得java.lang.OutOfMemoryError
我能做些什么才能做到这一点?
答案 0 :(得分:2)
你有无限循环,你没有在do-while语句中递增count
变量。
使用ch.setName(tempArray[count++]);
此外,while条件应为count < max
,否则您将获得ArrayIndexOutOfBoundsException。