我有一个自定义对象(AppDetails
),可以成对保存字符串值(Title
,Details
)。
我已经创建了这个对象的ArrayList
,然后是另一个ArrayList
的对象。
ArrayList<ArrayList<AppDetails>> appBox;
protected class AppDetails {
protected String DetailTitle;
protected String DetailDesc;
public AppDetails() {
DetailTitle = "";
DetailDesc = "";
}
public void setDetailTitle(String s) {
DetailTitle = s;
}
public void setDetailDesc(String s) {
DetailDesc = s;
}
public String getDetailTitle() {
return DetailTitle;
}
public String getDetailDesc() {
return DetailDesc;
}
}
将此保存到Android内部存储空间的最佳方法是什么?
我希望能够检索此appBox
并在应用启动时加载它,并在每次创建新的ArrayList
AppDetails
时将其保存到文件中。
答案 0 :(得分:1)
您可以将数据序列化为xml并使用首选项API保存此类xml。请参阅preference API official page。
简而言之,以下代码示例:
sPref = getPreferences(MODE_PRIVATE); //MODE_PRIVATE is a constant means that saved data will be accesed via current app only
Editor ed = sPref.edit(); //Editor for writing data
ed.putString(SAVED_TEXT, stringToWrite); //Prepare the string to save. SAVED_TEXT is a key for xml data chunk that will be saved
ed.commit(); //Save data
对于您的具体示例,可以执行以下操作:
sPref = getPreferences(MODE_PRIVATE);
Editor ed = sPref.edit();
for(List<AppDetails> lst : appBox){
for(AppDetails appDetails : lst){
ed.putString(appDetails.DetailTitle, appDetails.DetailText);
}
}
ed.commit();
答案 1 :(得分:0)
这可以通过不同方式实现。 考虑到数组不应该很大(数十个对象甚至数百个),您可以将它们作为SharedPreferences插入。为了让您的生活更轻松,我建议在存储到SharedPreferences之前使用Android中的GSON库将主数组解析为JSON字符串。 另一种方法是使用SQLite,因此使用数据库。您可以按如下方式设计1个表:
Id | MainArrayIndex | Title | Description
1 | 0 | title1 | desc
2 | 1 | title2 | desc
3 | 2 | title3 | desc
4 | 0 | title4 | desc
甚至可以设计2个表,一个用于将索引保存到主数组(因此可以减小数据大小),另一个用于存储数据本身。