尝试在不同的活动中保存和访问ArrayList Android

时间:2015-02-10 22:55:32

标签: java android arraylist data-storage

我是初学Android开发者,我正在寻找保存文件的帮助。在Google的开发人员文档中,他们声明使用内部存储来保存文件。 我的目标是创建一个可以根据需要保存和访问的arraylist。

目前,我有一个活动,用户可以将数据输入到字段中,然后创建一个包含该数据的新对象。我试图将这些数据添加到arraylist然后保存。但是,我需要在MainActivity中检查arraylist,这是在首次创建应用程序时访问的。主要活动需要检查ArrayList是否已存在或是否需要创建新的ArrayList。然后需要将该arraylist(通过Intents,已经理解该部分)发送到所有对arraylist执行操作的活动,然后将其发送回保存它的mainactivity。

任何可以提供的帮助都将受到无限的赞赏。如果不清楚我很抱歉,我会尽力澄清。任何提高我的Android技能的提示也将受到赞赏。

谢谢!

2 个答案:

答案 0 :(得分:0)

您需要做的第一件事是将文件加载到ArrayList中。例如,您可以使用AsyncTask执行此操作。有关此内容的更多信息,请访问:http://developer.android.com/guide/components/processes-and-threads.html

其次,如果您的ArrayList很大,我建议扩展Application类并在那里保存您的ArrayList实例,而不是通过Intent发送它。这样每个Activity(以及您应用的其他组件)都可以访问它。当您通过意图发送数据时,日期被封送/解组,这可能需要大量的CPU时间并且会使您的活动过渡变得干扰。

答案 1 :(得分:0)

实际上,它取决于您希望如何保存这些数据。它是在文件上(保存在存储卡上),但可以由用户删除。

如果您不希望允许用户访问您拥有的数据: - SQLite database - Shared preferences

如果不需要存储arraylist以供进一步使用,您也可以使用单例类(非常容易使用)。

public class Singleton {
private static Singleton mInstance = null;

private ArrayList<Integer> mArray;

private Singleton(){
mArray = new ArrayList<Integer>();
}

public static Singleton getInstance(){
if(mInstance == null)
{
mInstance = new Singleton();
}
return mInstance;
}

public ArrayList<Integer> getArray(){
return this.mArray;
}

public void setArray(ArrayList<Integer> value){
mArray = value;
}

public void addValue(Integer value){
mArray.add(value);
}
}

或使用这样的额外意图:

Intent i = new Intent(this,name.class);
Bundle b = new Bundle();
b.putIntegerArrayListExtra(String name, ArrayList<Integer> value);
i.putExtra(String name,b);
startActivity(i);

Bundle b = getIntent().getExtra().putParcelableArrayListExtra(String name);