2014-02-24 65 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都会初始化为一个新对象,并且不会有任何先前的值保留。