我正在创建一个Android应用程序,允许用户创建不同的朋友列表。对于每个列表,项目都有一个名称和2个参数......
示例
清单1 :( Steve,param 1,param 2),(Lisa,param 1,param 2)......等等
清单2 :( John,param 1,param 2),(Steve,param 1,param 2)......等 ...
动态保存用户创建的所有列表的最佳方法是什么?
我正在考虑使用SQLite,因为它很容易实现。
我也想使用普通的JSON文件,但这种方法似乎太耗费资源,因为应用程序处理添加,读取,修改内容......
那么,持久化这些对象的最佳方法是什么?
如果我使用数据库,我认为它应该有以下方案:
PERSONS - 列:Person_ID,Person_Name
LISTS - 列:列表
对于LISTS,每一行都是由某种元组组成的,代表一个列表。
示例
第1行:[(Person_ID,param1,param2),(Person_ID,param1,param2),...]
其中第1行是包含所有人员的单个列表。
不幸的是,这看起来效率不高......
我还想过创建一个额外的表
LIST_ROW - 列:row_id,Person_ID,param1,param2
然后LISTS表中的每一行都只是属于该列表的所有行的ID元组...
示例
第1行将成为:(row_id,row_id ....),表示列表1中的元素。
不幸的是,我不确定这是多么有效。
有人能告诉我实现这个目标的最佳方式是什么?
答案 0 :(得分:0)
如果数据不是那么大,您可以将它们保存在共享首选项中, 例如: 首先定义数据bean, 第二步将数据bean添加到arraylist 然后保存到sp:
saveObject("list_one", list);
/**
* Save object to SharedPreferences
*
* @param key
* @param obj
*/
protected void saveObject(String key, Object obj) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
String str = Base64.encodeToString(baos.toByteArray(), Base64.DEFAULT);
SharedPreferences.Editor editor = sp.edit();
editor.putString(key, str);
editor.commit();
} catch (IOException e) {
e.toString();
}
}
/**
* Read object from SharedPreferences
*
* @param key
* @return object
*/
protected Object getObject(String key) {
try {
String str = sp.getString(key, "");
ByteArrayInputStream baim = new ByteArrayInputStream(Base64.decode(str, Base64.DEFAULT));
ObjectInputStream ois = new ObjectInputStream(baim);
return ois.readObject();
} catch (Exception e) {
}
return null;
}
答案 1 :(得分:0)
您可以使用共享偏好设置。将列表转换为String(逗号分隔的对象和值)然后添加这是共享的prefrences。以同样的方式,您可以获得此并转换为您的列表。