0

私はこのようなDateApapterクラスを持っています..

 public class DateAdapter extends BaseAdapter
    { 
    ...
    }

この DateApapter を使用して、「mainActivity」から 12 の異なる場所で呼び出し、constructorこの結果を DateApapter オブジェクト「mDefaultAdapter」に保存します。

mDefaultAdapter = new DateAdapter(this,days,sysDate,disablePastDays, selectedDateTypeDf);

mDefaultAdapter のこのさまざまな結果を、このように ArrayList に格納しました。

ArrayList<DateAdapter> mDefaultAdapterList = new ArrayList<DateAdapter>();
mDefaultAdapterList.add(mDefaultAdapter);

今問題に来て、

  • 私の最初の呼び出し DateAdapter コンストラクターでは、1 月の詳細が返され、この結果 (1 月) を ArrayList に追加すると正常に動作します。これで、ArrayList には 1 つの項目、つまり 1 月の詳細が含まれます。
  • しかし、2番目の結果(2月)をarrayListに呼び出すと、最初の結果も上書きされます。ArrayList には 2 つの項目があり、どちらの項目も 2 月の詳細です。
  • つまり、DateAdapter の最終結果が ArrayList 全体に入力されます。最後に、ArrayList からのみ 12 月の詳細を取得しました。

以前の ArrayList 項目で DateAdapter の結果が上書きされるのはなぜですか? プログラム全体で静的変数やメソッドを使用していません。この問題を解決するのを手伝ってください。ありがとう..

4

2 に答える 2

1

アダプターで何が起こっているのかよくわかりません。たぶんArrayList、すべてのアダプターで同じオブジェクトを使用しています。

しかし、私はあなたがあなたのアプローチを再考するべきだと思います。

これが私がすることです。

1-カレンダーイベントをSQLiteデータベースに保存します。

2-FragmentPagerAdapterで、位置をカレンダーに渡しますFragment

3-カレンダーFragmentで、位置(0:1月-11:12月)を取得し、データベースにクエリを実行してイベントを取得します。

于 2013-01-24T08:56:17.390 に答える
0

それは私の間違いでした..問題は、以前の ArrayList 項目を上書きする不正なオブジェクト参照です。Date Adapter 用に別のオブジェクトを作成することで、自分自身を救いました。

于 2013-03-12T05:05:41.783 に答える