2011-03-05 59 views
0

在我的应用程序中,用户可以创建一个元素数组。他可以将Array1的名称分配给Array2。我的问题是,每次启动应用程序时,Array2 arraylist都是空的。 我定义数组是这样的:安卓数组列表在发布时为空

ArrayList<String> Array2 = new ArrayList<String>(); 

,这我怎么填充的ArrayList:

Array2.add(strBuf.toString()); //strBuf is StringBuffer created from two strings 

我是否错过了什么,或者我应该到数组保存到一个文件或者SG?

更新:

我在对话框中有两个旋钮和一个OK按钮。当用户从旋钮中选择项目并单击确定时,元素将添加数组列表。这是通过串联两个字符串完成的,一个用于第一个微调器,一个用于第二个(链接名称1和链接名称2)。 首先当数组列表为空时,添加项目。当数组列表中至少有一个项目时,验证该项目是否已经在数组列表中。如果是,则会被覆盖,否则会被添加。

Button okbtn = (Button) dialog.findViewById(R.id.ButtonOK); 
       okbtn.setOnClickListener(new View.OnClickListener() 
       { 
        public void onClick(View v) 
        { 
         if ((linkname1!="") && (linkname2!="")) 
         { 
          strBuf = new StringBuffer(); 
          strBuf.append(linkname2); 
          strBuf.append(" "); 
          strBuf.append(linkname1); 


          if (Array2.size() < 1) 
          { 
           Array2.add(strBuf.toString()); 
          } 
          else if (Array2.size() > 0) 
          { 
           for (int i=0; i<Array2.size(); i++) 
           { 
           spaceIndex4 = Array2.get(i).indexOf(' '); 
           if (spaceIndex4 > 0) 
           { 
            if (linkname1.equals(Array2.get(i).substring(spaceIndex4+1, Array2.get(i).length()))==true) 
            { 
             van=1; 
             Array2.remove(i); 
             Array2.add(strBuf.toString()); 
            } 
            else 
            { 
             van=2; 
            } 
           } 
           } 
          } 

          } 

         dialog.dismiss(); 
         if (van == 2) 
         { 
          Array2.add(strBuf.toString()); 
         } 
        } 
       });  

我稍后使用Arraylist中的项目(当用户单击ListView的特定项目时,应显示此ArrayList的项目)。 当我退出应用程序,无论是在Eclipse中,还是在我的手机上,然后再次打开该应用程序时,数组列表为空(因此当用户单击ListView项目时,项目不再出现)。 代码中没有Array2.clear()等。

+2

请向我们展示更多代码,因为这里没有错 – Dalmas 2011-03-05 19:58:41

+0

还包括为什么您认为ArrayList为空以及如何向用户呈现ArrayList。 – 2011-03-05 20:00:25

回答

0

你的ArrayList只是一个变量。一旦程序关闭,在任何编程环境中,变量都会死掉。你需要将你的物品永久保存在某个地方。将它写出到一个文件中,或者取决于你需要存储多少,你可以使用SharedPreferences。然后重新读入并重新填充onCreate()中的ArrayList。