【发布时间】:2014-10-14 12:17:12
【问题描述】:
好的,我知道为什么会这样了:cv.add(curid, temp);正在添加对 temp 的引用,temp 的内容稍后会更改,导致所有条目都相同,因为它们都链接到 temp。我查找了解决方案,但找不到适合我情况的解决方案,请参见下文:
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
Context context = getApplicationContext();
Resources res = context.getResources();
XmlResourceParser xpp = res.getXml(R.xml.thedata);
ArrayList<ArrayList<String>> cv = new ArrayList<ArrayList<String>>();
//Helper stuff
int curid = 0;
ArrayList<String> temp = new ArrayList<String>();
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
if(xpp.getName().equalsIgnoreCase("id")){
curid = Integer.parseInt(xpp.nextText());
}
if(xpp.getName().equalsIgnoreCase("room") == false && xpp.getName().equalsIgnoreCase("id") == false && xpp.getName().equalsIgnoreCase("data") == false){
temp.add(xpp.getName() + "<>" + xpp.nextText());
}
}
else if(eventType==XmlPullParser.END_TAG && xpp.getName().equalsIgnoreCase("room")){
cv.add(curid, temp);
temp.clear();
}
eventType = xpp.next(); //move to next element
//Restart Loop
}
我需要先在循环中填充 ArrayList temp,这使得我发现的解决方案不适用。
【问题讨论】:
标签: java android arrays 2d overwrite