2013-10-17 58 views
1

我用最後一個插入的元素覆蓋我的ArrayList中的所有元素。如果我在第一個元素中插入數字1,2,3,4,5,6的數組,然後將7,8,9,10,11,12插入到第二個元素中,則最終將覆蓋第一個元素來自第二個元素的值。我最終列出了一個包含7,8,9,10,11,12的列表。我看了一些其他答案,從我收集的內容來看,這與引用被添加而不是值有關,但我已經嘗試了很多不成功的事情。我只是在用盡了我的選擇後才嘗試發佈問題。任何幫助將不勝感激,並提前感謝。通過每次迭代覆蓋ArrayList的所有元素

這是我的應用程序的相關部分,我有問題。

private View.OnClickListener submitListener = new View.OnClickListener() { 

    ArrayList<int[]> tempArrayList = new ArrayList<int[]>(); 
    int[] ticketArray = new int[6]; 
    int counter = 0; 
    int tempCounter = 0; 
    PowerballPoolManagerApplication app = new PowerballPoolManagerApplication(); 

    @Override 
    public void onClick(View view) { 

     for (EditText editText : editTextList) { 

      if (!editText.getText().toString().matches("")) { 

       int currentNumber = Integer.parseInt(editText.getText().toString()); 
       ticketArray[tempCounter] = Integer.parseInt(editText.getText().toString()); 
       counter++; 
       tempCounter++; 

       if (counter > 0 && counter % 6 == 0) { 

        tempArrayList.add(ticketArray); 
        tempCounter = 0; 
       } 

回答

1

從外觀的直觀外觀來看,您將爲這兩個元素添加相同的數組。如果你希望數組是獨一無二的,你需要克隆它,或者每次迭代構建它。

這意味着在循環內創建您的ticketArray以檢查您的編輯文本值。

+0

這很有道理,我會試試看。我想我很困惑,因爲當我在調試器中檢查這些值時,我在每次添加之前都會在ticketArray中獲取唯一值。 –

+0

感謝izuruel,在添加它之前克隆了數組。我也應該在調試器中更接近我的數組列表,因爲我也意識到每個元素的內存地址是相同的。 –

+0

@MichaelBrooks很高興,這幫助你了! –