我已经检查了其他遇到同样问题的人,&几乎所有这些都在实例化他们想要在循环之外添加的对象。我已经在我的while循环中做了这个,所以我猜这不是我的问题。
public ArrayList<SHMapTile> tiles = new ArrayList<SHMapTile>();
.
.
.
private void parseXML(XmlPullParser parser) throws XmlPullParserException, IOException
{
int eventType = parser.getEventType();
int i = 0;
while ( eventType != XmlPullParser.END_DOCUMENT )
{
String name = null;
switch ( eventType )
{
case XmlPullParser.START_TAG:
{
name = parser.getName();
if ( name.equalsIgnoreCase("tile") )
{
SHMapTile tile = new SHMapTile();
tile.gid = i;
tiles.add(tile);
System.out.println("gid: " + tiles.get(0).gid);
i++;
}
break;
}
case XmlPullParser.END_TAG:
{
name = parser.getName();
if ( name.equalsIgnoreCase("data") )
{
this.runOnUiThread(new Runnable() {
public void run() {
drawCurrentMapRegion();
}
});
}
break;
}
}
eventType = parser.next();
}
}
为了进行调试,我为每个新对象附加了一个计数器。当我打印出列表中第一个元素的计数器时,它总是不同的。我试过克隆。也没用。
答案 0 :(得分:2)
正如您在评论中所说,班级gid
的字段SHMapTile
为static
。
这意味着在类的所有实例之间共享相同的值。如果你更新一个,它将在该类的所有istances中更新。删除static
修饰符,它将起作用