首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓:将ArrayList<T>存储在SharedPreferences中?

安卓:将ArrayList<T>存储在SharedPreferences中?
EN

Stack Overflow用户
提问于 2014-12-24 03:57:59
回答 1查看 279关注 0票数 2

我需要在我的ArrayList中存储一个“注释”类型的SharedPreferences。这是我的模特课:

代码语言:javascript
复制
public class Comment {

    public String getPID() {
        return PID;
    }
    public void setPID(String pID) {
        PID = pID;
    }
    public String PID;
    public String Comment;
    public String Commenter;
    public String Date;

    public String getComment() {
        return Comment;
    }
    public void setComment(String comment) {
        Comment = comment;
    }
    public String getCommenter() {
        return Commenter;
    }
    public void setCommenter(String commenter) {
        Commenter = commenter;
    }
    public String getDate() {
        return Date;
    }
    public void setDate(String date) {
        Date = date;
    }
}

因此,我的ArrayList包含两个需要存储在SharedPreferences中的注释。我尝试了HashSet,但它需要字符串值:

代码语言:javascript
复制
ArrayList<Comment_FB> fb = getFeedback(); //my Comments List

SharedPreferences pref = getApplicationContext().getSharedPreferences("CurrentProduct", 0);
Editor editor = pref.edit();
Set<String> set = new HashSet<String>();
set.addAll(fb);
editor.putStringSet("key", set);
editor.commit();

我怎样才能把这件事做完呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-24 04:11:17

我想你应该把它作为文件储存起来。

代码语言:javascript
复制
public static boolean save(String key, Serializable obj) {
    try {
        FileOutputStream outStream = new FileOutputStream(instance.getCacheDir() + "/" + key);
        ObjectOutputStream objOutStream;
        objOutStream = new ObjectOutputStream(outStream);
        objOutStream.writeObject(obj);
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }

    return true;
}


public static Object getObject(String key) {
    Object obj = null;
    if (!new File(instance.getCacheDir() + "/" + key).exists())
        return obj;
    FileInputStream inputStream;
    try {
        inputStream = new FileInputStream(instance.getCacheDir() + "/" + key);
        ObjectInputStream objInputStream = new ObjectInputStream(inputStream);
        obj = objInputStream.readObject();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    return obj;
}

您的“注释”类应该实现Serializable

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27631280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档