2013-01-24 34 views
0

我有一個DateApapter類這樣的..延伸BaseAdapter結果覆蓋之前的ArrayList項目

public class DateAdapter extends BaseAdapter 
    { 
    ... 
    } 

我用constructor稱之爲DateApapter從我的「mainActivity」 12個不同的地方,這個結果存儲在DateApapter對象 「mDefaultAdapter」 像這樣..

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

和類似這樣的存儲mDefaultAdapter的這個各種結果在ArrayList中..

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

現在來這個問題,

  • 在我的第一個呼叫DateAdapter構造函數,它返回月份一個月 細節,我加入這個結果(1月)到ArrayList中它的事業的罰款。 現在ArrayList有一個Item,即1月的細節。
  • 但是當我調用第二個結果(2月)到arrayList它覆蓋第一個 結果也。現在ArrayList有兩個Items, 這兩個項目都是2月的細節。
  • 這意味着DateAdapter的最後結果是填充整個ArrayList。 最後,我只從ArrayList獲得12月的細節。

爲什麼DateAdapter結果在先前的ArrayList項目中被覆蓋? 我沒有在整個程序中使用任何靜態變量或方法。 請幫我解決這個問題。謝謝..

+0

爲什麼你需要12個適配器在一個單一的活動?你想做什麼? –

+0

@Benito我想存儲12個月ViewPager Fragments的詳細信息。 – bCliks

回答

0

這是我的錯誤問題是非法的對象引用覆蓋我以前的ArrayList項目。 我通過爲Date Adapter創建單獨的對象來保存自己。

1

我不太清楚你的適配器發生了什麼。也許你正在使用與所有適配器相同的ArrayList對象。

但我認爲你應該重新考慮你的方法。

這是我會做的。

1-將日曆事件存儲在SQLite數據庫中。

2-在您的FragmentPagerAdapter中,將位置傳遞給您的日曆Fragment。在您的日曆Fragment中,檢索位置(0:1月 - 11月:12月)並查詢數據庫以檢索事件。

+0

感謝您的建議。我將在下一個項目中使用這個概念。 – bCliks