克隆要传递给ArrayList的新对象?

时间:2012-11-05 21:12:30

标签: java android events

我正在构建一个Android应用程序,我正在尝试将对象添加到ArrayList。我认为这会在ArrayList中创建对象的副本,然后我可以重用该对象。我已经意识到情况并非如此,ArryList实际上是在引用原始对象。

我不确定如何使用循环在onCreate函数中创建新对象,所以我是否需要克隆该对象并将其传递给ArrayList

无论如何,这是我的代码:

 public class Main extends Activity {
  private Item myItem = new Item();

  btnSave.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            alItems.add(myItem);
            arrayAdapter.notifyDataSetChanged();

2 个答案:

答案 0 :(得分:3)

您可以在Item课程中创建copy constructor,并使用它来创建对象的副本。

public class Item {
    private int field1;
    public Item() { }

    public Item(Item item) {
       this.field1 = item.field1;
    }
}

使用以下方法将对象添加到列表: -

alItems.add(new Item(myItem));

答案 1 :(得分:2)

制作Item工具Clonable然后

public void onClick(View v) {
        alItems.add(myItem.clone());
        arrayAdapter.notifyDataSetChanged();