2012-09-30 46 views
0

我有一個對象數組:將對象添加到列表視圖 - ANDROID

Tratam - > has String,int ect ..和一個Date對象。

我想添加到一個ArrayList中每個日期的不同值的3個相同的對象..

我已經安排了下面的代碼,但作爲結果ArrayList中總是與最後日期添加的對象..例如:如果日期必須是3:05,3:15和3:25,請添加具有第三個值的對象。

有誰知道我在做什麼錯?

在此先感謝!

for(n=0;n<tam;n++){ 
    addObj(arrayObj[n]); 
} 


public void addObj(Tratam trat){ 
    Tratam [] arrayObj2 = new Tratam[3]; 
    Date date=trat.getNextTime(); 
    for(int n=0;n<3;n++){ 
     arrayObj2[n]=trat; 
     Calendar cal = Calendar.getInstance(); 
     cal.setTime(date); 
     cal.add(Calendar.SECOND, interval); 
     date=cal.getTime(); 
     arrayObj2[n].setNextTime(date); 

     arrayListTrat.add(arrayObj2[n]); 
     } 

    } 

回答

1

簡單檢查你的代碼告訴我,你再次在列表中添加相同的對象。這就是爲什麼你會得到同樣的時間。

這是我做的檢查。

public void addObj(Tratum trat) { 
     Tratum[] arrayObj2 = new Tratum[3]; 
     Date date = trat.getNextTime(); 
     for (int n = 0; n < 3; n++) { 
      arrayObj2[n] = trat; // I think this line is the culprit 
      Calendar cal = Calendar.getInstance(); 
      cal.setTime(date); 
      cal.add(Calendar.SECOND, n + 1000 * n); 
      date = cal.getTime(); 
      Log.d("inTemp","" + date.toString()); 

      arrayObj2[n].setNextTime(date); 
      if(n ==1){ 
       if(arrayObj2[n].equals(arrayObj2[n-1])){ 
        Log.d("TEMP","$$Equal"); 
       } 
      } 
      arrayListTrat.add(arrayObj2[n]); 
     } 

試試這個:

而不是做這個的。

arrayObj2[n] = trat; 

嘗試做這樣的,

arrayObj2[n] = new Tratum(); 
    arrayObj2[n].setNextDate(trat.getNextDate()); // In short rather than assigning object trat to your array object. Simply assign values. 

這應該解決您的問題。

+0

謝謝@VendettaDroid !!! –