0

我有一个对象数组:

Tratam --> 有 String、int ect.. 和一个 Date 对象。

我想将每个具有不同日期值的 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]);
        }

    }
4

1 回答 1

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. 

这应该可以解决您的问题。

于 2012-09-30T05:23:00.770 回答