Java 如何将()ArrayList添加到2D ArrayList而不覆盖以前的条目?
好的,我知道为什么会这样:cv.add(curid,temp);正在添加对temp的引用,temp的内容稍后会更改,导致所有条目都相同,因为它们都链接到temp。我查找了解决方案,但找不到适用于我的情况的解决方案,请参见以下内容:Java 如何将()ArrayList添加到2D ArrayList而不覆盖以前的条目?,java,android,arrays,2d,overwrite,Java,Android,Arrays,2d,Overwrite,好的,我知道为什么会这样:cv.add(curid,temp);正在添加对temp的引用,temp的内容稍后会更改,导致所有条目都相同,因为它们都链接到temp。我查找了解决方案,但找不到适用于我的情况的解决方案,请参见以下内容: XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(false); Contex
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
}
XmlPullParserFactory工厂=XmlPullParserFactory.newInstance();
factory.setNamespaceAware(false);
Context=getApplicationContext();
Resources res=context.getResources();
XmlResourceParser xpp=res.getXml(R.xml.thedata);
ArrayList cv=新的ArrayList();
//辅助材料
int-curid=0;
ArrayList temp=新的ArrayList();
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START_标记){
if(xpp.getName().equalsIgnoreCase(“id”)){
curid=Integer.parseInt(xpp.nextText());
}
if(xpp.getName().equalsIgnoreCase(“房间”)==false&&xpp.getName().equalsIgnoreCase(“id”)==false&&xpp.getName().equalsIgnoreCase(“数据”)==false){
临时添加(xpp.getName()+“”+xpp.nextText());
}
}
else if(eventType==XmlPullParser.END_标记&&xpp.getName().equalsIgnoreCase(“房间”)){
cv.添加(居里、温度);
温度清除();
}
eventType=xpp.next();//移动到下一个元素
//重新启动循环
}
我需要首先在循环中填充ArrayList temp,这使得我发现的解决方案不适用 为什么不将所有的“Helper内容”移动到Helper方法中呢
public ArrayList<String> helperMethod(XmlResourceParser xpp, MutableInt id) {
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")){
id.setValue(curid);
break;
}
eventType = xpp.next(); //move to next element
//Restart Loop
}
return temp;
}
public ArrayList helperMethod(XmlResourceParser-xpp,MutableInt-id){
int-curid=0;
ArrayList temp=新的ArrayList();
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START_标记){
if(xpp.getName().equalsIgnoreCase(“id”)){
curid=Integer.parseInt(xpp.nextText());
}
if(xpp.getName().equalsIgnoreCase(“房间”)==false&&xpp.getName().equalsIgnoreCase(“id”)==false&&xpp.getName().equalsIgnoreCase(“数据”)==false){
临时添加(xpp.getName()+“”+xpp.nextText());
}
}
else if(eventType==XmlPullParser.END_标记&&xpp.getName().equalsIgnoreCase(“房间”)){
id.setValue(curid);
打破
}
eventType=xpp.next();//移动到下一个元素
//重新启动循环
}
返回温度;
}
那么你可以这样称呼它
ArrayList<String> tempList;
MutableInt id = new MutableInt(0);
while((tempList = helperMethod(xpp, id)) != null) {
cv.add(id, tempList);
}
arraylisttemplast;
MutableInt id=新的MutableInt(0);
while((templast=helperMethod(xpp,id))!=null){
简历添加(id,圣殿骑士);
}
为什么不将所有的“Helper内容”移动到Helper方法中
public ArrayList<String> helperMethod(XmlResourceParser xpp, MutableInt id) {
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")){
id.setValue(curid);
break;
}
eventType = xpp.next(); //move to next element
//Restart Loop
}
return temp;
}
public ArrayList helperMethod(XmlResourceParser-xpp,MutableInt-id){
int-curid=0;
ArrayList temp=新的ArrayList();
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START_标记){
if(xpp.getName().equalsIgnoreCase(“id”)){
curid=Integer.parseInt(xpp.nextText());
}
if(xpp.getName().equalsIgnoreCase(“房间”)==false&&xpp.getName().equalsIgnoreCase(“id”)==false&&xpp.getName().equalsIgnoreCase(“数据”)==false){
临时添加(xpp.getName()+“”+xpp.nextText());
}
}
else if(eventType==XmlPullParser.END_标记&&xpp.getName().equalsIgnoreCase(“房间”)){
id.setValue(curid);
打破
}
eventType=xpp.next();//移动到下一个元素
//重新启动循环
}
返回温度;
}
那么你可以这样称呼它
ArrayList<String> tempList;
MutableInt id = new MutableInt(0);
while((tempList = helperMethod(xpp, id)) != null) {
cv.add(id, tempList);
}
arraylisttemplast;
MutableInt id=新的MutableInt(0);
while((templast=helperMethod(xpp,id))!=null){
简历添加(id,圣殿骑士);
}
为什么不将所有的“Helper内容”移动到Helper方法中
public ArrayList<String> helperMethod(XmlResourceParser xpp, MutableInt id) {
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")){
id.setValue(curid);
break;
}
eventType = xpp.next(); //move to next element
//Restart Loop
}
return temp;
}
public ArrayList helperMethod(XmlResourceParser-xpp,MutableInt-id){
int-curid=0;
ArrayList temp=新的ArrayList();
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START_标记){
if(xpp.getName().equalsIgnoreCase(“id”)){
curid=Integer.parseInt(xpp.nextText());
}
if(xpp.getName().equalsIgnoreCase(“房间”)==false&&xpp.getName().equalsIgnoreCase(“id”)==false&&xpp.getName().equalsIgnoreCase(“数据”)==false){
临时添加(xpp.getName()+“”+xpp.nextText());
}
}
else if(eventType==XmlPullParser.END_标记&&xpp.getName().equalsIgnoreCase(“房间”)){
id.setValue(curid);
打破
}
eventType=xpp.next();//移动到下一个元素
//重新启动循环
}
返回温度;
}
那么你可以这样称呼它
ArrayList<String> tempList;
MutableInt id = new MutableInt(0);
while((tempList = helperMethod(xpp, id)) != null) {
cv.add(id, tempList);
}
arraylisttemplast;
MutableInt id=新的MutableInt(0);
while((templast=helperMethod(xpp,id))!=null){
简历添加(id,圣殿骑士);
}
为什么不将所有的“Helper内容”移动到Helper方法中
public ArrayList<String> helperMethod(XmlResourceParser xpp, MutableInt id) {
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")){
id.setValue(curid);
break;
}
eventType = xpp.next(); //move to next element
//Restart Loop
}
return temp;
}
public ArrayList helperMethod(XmlResourceParser-xpp,MutableInt-id){
int-curid=0;
ArrayList temp=新的ArrayList();
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START_标记){
if(xpp.getName().equalsIgnoreCase(“id”)){
curid=Integer.parseInt(xpp.nextText());
}
if(xpp.getName().equalsIgnoreCase(“房间”)==false&&xpp.getName().equalsIgnoreCase(“id”)==false&&xpp.getName().equalsIgnoreCase(“数据”)==false){