繁体   English   中英

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

[英]Trying to save and access an ArrayList Android in different activities

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

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

可以提供的任何帮助将不胜感激。 很抱歉,如果不清楚,我会尽力澄清。 任何提高我的android技能的技巧也将不胜感激。

谢谢!

您需要做的第一件事是将文件加载到ArrayList中。 例如,您可以使用AsyncTask来实现。 此处的更多信息: http : //developer.android.com/guide/components/processes-and-threads.html

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

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

如果您不希望允许用户访问您拥有的数据: - SQLite数据库 - 共享首选项

如果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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM