2014-02-24 49 views
0

我的活動onCreate中有一個ArrayAdapter<String>構造函數。我的問題是,每次調用包含ArrayAdapter Constructer的Activity的onCreate方法時,ArrayAdapter都會將項添加到之前onCreate調用中的項中,因此每次調用onCreate方法時都會複製相同的項。ArrayAdapter <String>複製活動onCreate的項目

一個例子是:
第一呼叫到活動 - ArrayAdapter =藍色,黑色,棕色
第二呼叫到活動 - ArrayAdapter =藍色,黑色,棕色,藍色,黑色,棕色
到活動第三呼叫 - ArrayAdapter =藍色,黑色,棕色,藍色,黑色,棕色,藍色,黑色,棕色

我的構造看起來像這樣

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.adapter,colors); 

基本上,我需要一個ArrayAdapter保持不變多個電話ŧ o活動的onCreate

+0

你可以發佈你的代碼填寫'顏色'嗎? – ianhanniballake

+1

如果你在Activity的構造函數中這樣做,那麼你需要把它放在onCreate()或者調用List#clear()。系統不一定會創建一個現在的Activity對象引用。 – DeeV

+0

我的ArrayAdapter構造函數在Activity的onCreate()中。如果Activity被銷燬並且onCreate被再次調用。 ArrayAdapter項目列表是重複的。 – user3056349

回答

1

由於每次創建Activity時都會將項目追加到列表中,因此在將元素添加到列表之前,請遵循以下條件之一。

第一種方式

onCreate(){ 
     if(colors.size()==0){ 
    // add the elements there}; 
    } 

與第二方式..

onCreate() { 
    colors.clear(); 
//add the elements here. 

選項1是首選,如果要添加每一次相同的項目。

如果每次添加不同的項目,選項2是首選。

0

解決此問題的最簡單方法是在活動的onCreate()方法中包含ArrayAdapter設置和初始化。這樣,每次調用活動時,ArrayAdapter都會初始化爲一個新對象,並且不會有任何先前的值保留。