android – 保存xml文件中的对象列表

我想在xml文件中保存mylist(包含Sms)

private String checkSms() {

Uri uriSMSURI = Uri.parse("content://sms/inbox");  

ArrayList<Sms> myList = new ArrayList<Sms>();

Cursor cur = getActivity().getContentResolver().query(uriSMSURI, null, null,null, null);
while (cur.moveToNext()) 
{
   newSms.setsender(cur.getString(2));
   for(int i = 0 ; i < myList.size(); i++){
      mylist.add(newSms;)}
   }
    System.out.println(sms);
    return (myList); 
}

最佳答案 这样的东西会创建一个新的XML文件,其列表以XML格式保存:

XmlSerializer serializer = Xml.newSerializer();
StringWriter writer = new StringWriter();

try {
    serializer.setOutput(writer);
    serializer.startDocument("UTF-8", true);
    serializer.startTag("", "messages");
    serializer.attribute("", "number", String.valueOf(messages.size()));
    for(String text : myList) {
        serializer.startTag("", "sms");
        serializer.text(text);
        serializer.endTag("", "sms");
    }
    serializer.endTag("", "messages");
    serializer.endDocument();
    String xml = writer.toString();
} catch (Exception e) {
    throw new RuntimeException(e);
}

try {
    File root = new File(Environment.getExternalStorageDirectory(), "List");
    if(!root.exists()) root.mkdirs();
    File file = new File(root, name);
    FileWriter writer = new FileWriter(file);
    writer.append(xml);
    writer.flush();
    writer.close();
    Toast.makeText(this, "Saved list", Toast.LENGTH_SHORT).show();
} catch(IOException e) {
    e.printStackTrace();
}

您还需要写入权限,因此将其添加到清单文件中:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
点赞