如何在首选项存储中存储POJO的内容?

时间:2011-02-24 01:58:02

标签: android

我希望找到一种方法将POJO(包含字符串,布尔值,整数)的值存储在首选变量中,然后我可以通过存储它时使用的密钥来检索它。 POJO包含许多String / boolean / int属性,因此我不想单独存储它们。我遇到的问题是唯一的首选变量类型是String,boolean,float和int。有没有办法将POJO转换为一个String,然后我可以根据它的密钥检索回来并转换回POJO,有点像铸造它> 1)填充POJO 2)将POJO转换为字符串 3)使用键值将String存储在首选项存储中(普通首选项存储) 4)需要时,将数据作为字符串从首选项存储中检索回来,并将其转换回POJO。

1 个答案:

答案 0 :(得分:1)

不是最优雅的解决方案,但是:

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(instance);
objectOutputStream.flush();
val = Base64.encodeBase64String(outputStream.toByteArray()));

要反序列化:

byte[] data = Base64.decodeBase64(dataStr);
ObjectInputStream objectInputStream = null;
try
{
     ByteArrayInputStream inputStream = new ByteArrayInputStream(data);
     objectInputStream = new ObjectInputStream(inputStream);
     return (T)objectInputStream.readObject();
}
finally {
     if (objectInputStream != null)
        objectInputStream.close();
}

其中T是对象类型。