0

私はオブジェクトの配列を持っています:

Tratam->には、String、int ect ..、およびDateオブジェクトがあります。

それぞれのDateの値が異なる3つの同一のオブジェクトをArrayListに追加したいと思います。

次のコードをスケジュールしましたが、結果として、arraylistは常に最後の日付のオブジェクトを追加します。例:日付を3:05、3:15、3:25にする必要がある場合は、3番目の値のオブジェクトを追加します。 。

誰かが私が間違っていることを知っていますか?

前もって感謝します!!!

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 に答える