2013-02-25 142 views
1

这个问题他可能更多的是请求一些建议如何以最好的方式保存一些数据。我正在做一个应用程序,我通过设备上的ContactsContract中的联系人标记来自设备的图像,方法是将图像的文件路径与选定的联系人以及联系人保存在一起,我想这足以保存ID或名称那联系?将持久文本文件保存在内部存储器中

我需要一些建议,我应该如何使用FileOutputStream来写入这些数据。我应该如何保存文件中每行的“filepath,id”字符串或最佳方式?我还需要搜索文件路径和联系人是否已经在文件中,并且能够为图像添加多个联系人。首先,我认为我可以为每个图像使用一个文件,并添加所有标记了它的联系人,但这可能不是一个好办法吗?!

有点意见!

编辑:

如果我使用共享偏好然后我可以使用联系人ID作为关键字和作为值图像路径?然后,我可以添加具有不同值的多个唯一ID密钥?但我想,我不能为一个键添加多个值?

+0

您可能会尝试为此使用sqlite。 – Anukool 2013-02-25 13:00:30

回答

0

你需要某种结构化的数据系统。

您是否试过SQLite? - SQLite似乎对这项工作很好。

CREATE TABLE `contact`('id' INT , 'contact_id' TEXT, 'image_file_path' TEXT, TEXT, PRIMARY KEY('id')) 

你的搜索功能很简单,我想开始here

+0

是的,这将是不错的,但这是一个必须使用文件的任务! SQLite的使用是这项任务中的下一步,我想更容易!男子气概的尖端!:) – 2013-02-25 13:07:00

+0

如果必须使用的文件,你需要探讨的结构数据的文件格式,也许尝试JSON,P – 2013-02-25 13:11:34

0

编辑:

您可以将其转换成jsonstring并放入sharedPreferences插入的联络方式。

例子:

JSONObject obj=new JSONObject(); 
    obj.put("Contactid", 1); 
    obj.put("ImagePath", "/sdcard/download/a.png"); 

String jsonstring=obj.toString(); 

,如果你有比使用JSON数组像这样

JSONArray array=new JSONArray("ContactDetails"); 
for(int i=0;i<noofcontacts;i++) 
{ 
     JSONObject obj=new JSONObject(); 
     obj.put("Contactid", 1); 
     obj.put("ImagePath", "/sdcard/download/a.png"); 
     array.put(obj); 
} 
jsonstring= array.toString(); 

储存联系人信息在SharedPreferences这样

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString("contactDetails", jsonstring); 
    editor.commit(); 

现在得到SharedPreference值的多个联系人

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
    String jsoncontactdetails= sharedPreferences.getString("contactDetails", null); 

我希望你知道Json解析。


在这种情况下使用数据库是最好的选择。因为很难将每个文件保存在内部存储器中,并且还会消耗一些处理时间。最好是联系数据库中联系人的图像路径。

+0

我必须使用TEXTFILES :( – 2013-02-25 13:24:31

+0

@ 3D-kreativ以何种方式,你需要我的帮助.. – Pragnani 2013-02-25 13:29:38

+0

不是吗?与使用共享偏好更好? – 2013-02-25 13:51:22

相关问题