首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

SharedPreferences怎么存储集合

2013-05-02 
SharedPreferences如何存储集合有一个list要存不想用数据库,有什么方案吗?难道要这样存吗:keya1 value

SharedPreferences如何存储集合
有一个list要存不想用数据库,有什么方案吗?
难道要这样存吗:
key="a1" value="xxxx"
key="a2" value="xxxx"
key="a3" value="xxxx"
key="a4" value="xxxx"
key="a5" value="xxxx"
key="a6" value="xxxx"

[解决办法]
 PS:可以序列化到文件中。

  xml  json 都可以。

  SharedPreferences没有提供类似功能吧。
[解决办法]
value可以是一个集合对象..
[解决办法]
我们知道SharedPreferences只能保存简单类型的数据,例如,String、int等。如果想用SharedPreferences存取更复杂的数据类型(类、图像等),就需要对这些数据进行编码。我们通常会将复杂类型的数据转换成Base64编码,然后将转换后的数据以字符串的形式保存在 XML文件中
需要用到:commons-codec-1.4.jar

     AddNewWord addWord=new AddNewWord();
          addWord.setWords(word.getWords());
          addWord.setWordClass(i);
          SharedPreferences mySharedPreferences=getSharedPreferences("new_word", Activity.MODE_WORLD_READABLE);
          ByteArrayOutputStream baos = new ByteArrayOutputStream(3000);
          ObjectOutputStream oos=null;
          try {
           oos = new ObjectOutputStream(baos);
           oos.writeObject(addWord);
          } catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
          }
          // 将Product对象放到OutputStream中
          // 将Product对象转换成byte数组,并将其进行base64编码
          String newWord = new String(Base64.encodeBase64(baos.toByteArray()));
          SharedPreferences.Editor editor = mySharedPreferences.edit();
          // 将编码后的字符串写到base64.xml文件中
          editor.putString("newWord", newWord);
          editor.commit();
读取对象:
    String wordBase64 = mySharedPreferences.getString("new_word", "");
   // 对Base64格式的字符串进行解码
       byte[] base64Bytes = Base64.decodeBase64(wordBase64 .getBytes());
         ByteArrayInputStream bais = new ByteArrayInputStream(base64Bytes);
      ObjectInputStream ois = new ObjectInputStream(bais);
  // 从ObjectInputStream中读取Product对象
     AddNewWord addWord= (AddNewWord ) ois.readObject();
对象实体:
 
public class AddNewWord implements Serializable{

 private static final long serialVersionUID = -37782648386953312L;


 private String words;
 private int wordClass;
 public String getWords() {
  return words;
 }
 public void setWords(String words) {
  this.words = words;
 }
 public int getWordClass() {
  return wordClass;
 }
 public void setWordClass(int wordClass) {
  this.wordClass = wordClass;
 }
 @Override
 public String toString() {
  return "AddNewWord [words=" + words
    + ", wordalt="SharedPreferences怎么存储集合" />
[解决办法]
http://blog.csdn.net/joyce_qin_1986/article/details/8817092

热点排行