将多个对象添加到ArrayList会导致仅多次添加最后一个项目

时间:2014-06-24 06:58:15

标签: java android arraylist

我正在尝试将对象添加到ArrayList,但似乎无论何时调用add方法,列表都只填充我添加的最后一个对象。

以下是我添加的内容:

MyObject testObject1 = new MyObject();
testObject1.setType(0);
MyList.myList.add(testObject1);
MyObject testObject2 = new MyObject();
testObject2.setType(1);
MyList.myList.add(testObject2);

MyList是一个具有单个ArrayList的类,其定义如下:

public static ArrayList<MyObject> myList = new ArrayList<MyObject>();

MyObject是一个包含一些成员变量和方法的类:

static int type;
public void setType(int inType) {
  type = inType;
}

然后我在MyList.myList中列出对象,如下所示:

for (int i=0; i<MyList.myList.size(); i++) {
  Log.d(TAG, "Type is " + MyList.myList.get(i).getType());
}

它列出了2个对象,但类型始终为1。

怎么了?

感谢。

2 个答案:

答案 0 :(得分:3)

因为setTypestatic,它与对象的状态无关

MyObject.setType = 1;

staticsetType中移除MyObject关键字,并为每个实例设置其值


查看

答案 1 :(得分:0)

static int type;
public void setType(int inType) {
  type = inType;
}

您不应该从实例方法设置静态变量。

int type;
public void setType(int inType) {
  type = inType;
}

如上所述更改将解决您的问题。