【问题标题】:Trying to save and access an ArrayList Android in different activities尝试在不同的活动中保存和访问 ArrayList Android
【发布时间】:2015-02-10 22:55:31
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 当你说“保存”的时候,你说的是一种什么样的坚持?记忆?内部存储器?您希望将数据保留多长时间?
  • 我想几乎永久地保留数据,基本上直到用户删除文件。我希望能够定期编辑数组列表。

标签: java android arraylist data-storage


【解决方案1】:

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

其次,如果您的 ArrayList 很大,我建议您扩展 Application 类并将您的 ArrayList 实例保存在那里,而不是通过 Intent 发送它。这样每个 Activity(以及应用程序的其他组件)都可以访问它。当您通过意图发送数据时,日期将被封送/取消封送,这可能会占用大量 CPU 时间并阻碍您的活动转换。

【讨论】:

  • 对不起,我不明白您将文件加载到数组列表中的意思。我正在尝试将数组列表存储为文件。本质上是创建对象 PEOPLE 的数组列表,然后存储该数组列表以供以后访问。再次感谢!
  • 您可以添加您尝试存储/加载文件的代码吗?
  • 对不起,我没有写太多代码。我仍在尝试弄清楚文件输出和输入的放置顺序,并仍在尝试了解它们的工作原理。
【解决方案2】:

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

如果您不想让用户访问您拥有的那些数据: - 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);

【讨论】:

  • 我确实希望用户能够仅在应用程序中编辑数组列表。此外,每次打开应用程序时,我都需要存储和访问数据。就像我需要在应用程序的每个部分的每个活动中访问一个数组列表。
  • 所以使用 SQLite 数据库。 ArrayList 只是一个用于处理从 SQLite 数据库中检索的数据的对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 2019-07-26
  • 2016-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多