我试图找出如何在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
。
三江源!
答案 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
表,其中包含每个对象字段的列。例如,包含名为AppName
,PackageName
等
您可以简单地将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数据库