有一个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"

解决方案 »

  1.   

     PS:可以序列化到文件中。  xml  json 都可以。  SharedPreferences没有提供类似功能吧。
      

  2.   

    我们知道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
        + ", wordClass=" + wordClass
        + "]";
     }
     
    }
      

  3.   

    http://blog.csdn.net/joyce_qin_1986/article/details/8817092
      

  4.   

    如果把数据编码再当字符串存的话,从某个角度来讲,prefrence不就没有意义了吗