将数据保存在对象的ArrayList中

时间:2015-09-07 15:24:58

标签: java android arraylist

我试图找出如何在ArrayList个对象中保存一些数据,但我是Java的新手,所以我遇到了一些麻烦......

所以我们假设我们有一个ArrayList这个对象:

public class AppListModel(){
   private String AppName;
   private String packageName;

   public AppListModel(){

   }

   public String getAppName() {
       return appName;
   }

   public String getPackageName() {
       return packageName;
   }

   public void setAppName(String appName) {
       this.appName = appName;
   }

   public void setPackageName(String packageName) {
       this.packageName = packageName;
   }
}

我们在difrent文件中有这个对象的arrayList:

public class ProfilesList {

private ArrayList<AppListModel> profilesList = new ArrayList<AppListModel>();

public ProfilesList(){

}

public ArrayList<AppListModel> getProfilesList() {
    return profilesList;
}

public void setProfilesList(ArrayList<AppListModel> profilesList) {
    this.profilesList = profilesList;
}

public void addProfilesList(AppListModel appListModel) {
    this.profilesList.add(appListModel);
}

}

是否可以将数据存储在一个文件中,如:

AppListModel appList = new AppListModel();
appList.setAppName("ssss");
appList.setPackageName("ddddd");
ProfilesList list = new ProfilesList();
list.addProfilesList(appList);

然后从另一个文件中访问这些数据,如:

ArrayList<AppListModel> list = new ArrayList<AppListModel>();
ProfilesList profList = new ProfilesList();
list = profList.getProfilesList();

最后一个代码示例中的ArrayList命名列表现在是否包含先前创建的数据?

如果没有,怎么会有这样的事情呢?我需要使用soma数据库吗?

我想用它来处理android中不同活动之间的ArrayList

三江源!

5 个答案:

答案 0 :(得分:1)

&#34; new&#34; keyword创建对象的新实例(在这种情况下,是一个集合,一个空集合)。

如果您想访问之前创建的同一个实例,则需要&#34;传递&#34;它到了需要它的地步。假设您的使用代码包含在函数中:

void doSomething(ProfilesList profList) {
   ArrayList<AppListModel> list = new ArrayList<AppListModel>();
   list = profList.getProfilesList();
   //do something with list...
}

然后您可以通过执行以下操作来调用此代码:

AppListModel appList = new AppListModel();
appList.setAppName("ssss");
appList.setPackageName("ddddd");
ProfilesList list = new ProfilesList();
list.addProfilesList(appList);
doSomething(list);

答案 1 :(得分:1)

如果您想访问应用不同部分的数据,我建议您使用SharedPreferences。有关此内容的更多信息,请参见here。但是,SharedPreferences对键值对更有用。

在您的情况下,SQLite数据库会更有用。见here。您将创建一个SQLite表,其中包含每个对象字段的列。例如,包含名为AppNamePackageName

列的表格

您可以简单地将ArrayList作为参数传递给应用的不同部分,但如果您开始处理多个列表,这可能会很麻烦且无效。随着您的应用程序的增长,SQLite数据库将更加高效。

答案 2 :(得分:1)

你在这里list

AppListModel appList = new AppListModel();
appList.setAppName("ssss");
appList.setPackageName("ddddd");
ProfilesList list = new ProfilesList();
list.addProfilesList(appList);

不会与此处的list相同:

ArrayList<AppListModel> list = new ArrayList<AppListModel>();
ProfilesList profList = new ProfilesList();
list = profList.getProfilesList();

任何时候你制作一个new ProfilesList()它与其他任何一个都不一样。

public void anyMethod() {
    //list1 is not the same as list2
    ArrayList<AppListModel> list1 = new ArrayList<AppListModel>();
    ArrayList<AppListModel> list2 = new ArrayList<AppListModel>();

    //list3 will be same as list1
    ArrayList<AppListModel> list3 = list1;

    //adding an AppListModel to list1
    AppListModel appList = new AppListModel();    
    list1.add(appList);

    list1.getProfilesList().isEmpty(); //false because it has appList
    list2.getProfilesList().isEmpty(); //true
    list3.getProfilesList().isEmpty(); //false because it refers to list1 which has appList
}

以上显示ArrayList s。

之间的差异

答案 3 :(得分:0)

“new”将始终创建所需对象的新实例。

你想查找SQLite。这是你在android中存储数据的方式。 http://developer.android.com/training/basics/data-storage/databases.html

一旦将其保存在本地手机的数据库中,您就可以随时检索数据并将其添加到想要的阵列列表中。但是,对数据的任何更改都需要再次提交到数据库,以便永久存储。

答案 4 :(得分:0)

  

上一个代码示例中的ArrayList命名列表是否包含先前创建的数据?

如果您使用此代码:

ProfilesList profList = new ProfilesList();
ArrayList<AppListModel> list = profList.getProfilesList()

在您创建ProfilesList对象的新实例时,您将获取以前保存的任何数据。您需要使用相同的实例来获取数据

ProfilesList profList = new ProfilesList();
profList.addProfilesList(...);

//...    

//This would then return the correct data
ArrayList<AppListModel> list = profList.getProfilesList();

如果您需要更多持久存储,我建议使用SQLite数据库