Android arraylist在发布时为空

时间:2011-03-05 19:56:07

标签: android arraylist

在我的应用程序中,用户可以创建一个元素数组。例如。他可以为Array2指定Array1的名称。我的问题是,每次启动应用程序时,Array2 arraylist都是空的。 我像这样定义数组:

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

这就是我如何填充arraylist:

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

我是否会遗漏某些内容或者应该将数组保存到文件中还是将其保存到其他文件中?

更新

我在对话框中有两个微调器和一个OK按钮。当用户从微调器中选择项目并单击“确定”时,将添加一个元素arraylist。这是通过连接两个字符串来完成的,一个用于第一个微调器,一个用于第二个(linkname1和linkname2)。 首先当arraylist为空时,添加项目。当arraylist中至少有一个项目时,验证该项目是否已经在arraylist中。如果是,则覆盖它,如果没有,则添加它。

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和手机上退出应用程序,然后再次打开它时,arraylist为空(因此当用户点击ListView的项目时,项目不再出现)。 代码中没有Array2.clear()等。

1 个答案:

答案 0 :(得分:0)

您的ArrayList只是一个变量。一旦程序关闭,变量就会在任何编程环境中死亡。您需要将物品永久保存在某个地方。将其写入文件,或根据您需要存储的数量,您可以使用SharedPreferences。然后只需将其读回并重新填充onCreate()中的ArrayList。