【问题标题】:How to Save A POJO Object In Internal Storage如何在内部存储中保存 POJO 对象
【发布时间】:2015-03-24 08:18:04
【问题描述】:

正如标题所示,我无法通过 SharedPreferences 将 pojo 保存到手机内部存储中。这是我创建 pojo 的代码:

class dataPOJO{
String fileName;
String cName;
String[] cN;


public String getName() {
    return cName;
}

public void setName(String cName) {
    this.cName = cName;
}

public String getFileName() {
    return fileName;
}

public void setFileName(String fileName) {
    this.fileName = fileName;
}

public String[] getText() {
    return cN;
}

public void setExtras(String[] cN) {
    this.cN = cN;
}

public String toString() {
    String savePackage = "File Name: " + getFileName() + "\n";
    savePackage += "CName: " + getName() + "\n";
    savePackage += getText() + "\n";
    return savePackage;
}
}

还有我拯救pojo的尝试:

fileName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //doc identifier stuff
            SharedPreferences sharedPrefs = getSharedPreferences("DOC_INT",Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPrefs.edit();
            doc_id++;
            editor.putInt("doc_id",doc_id);
            editor.commit();
            //dataPojo stuff
            SharedPreferences sharedSavePrefs = getSharedPreferences("DATA"+doc_id,Context.MODE_PRIVATE);
            SharedPreferences.Editor save_editor = sharedSavePrefs.edit();


            dataPojo.setNotes(save_text_notes);
            dataPojo.setName(save_text_class_name);
            dataPojo.setFileName(file_name);











        }
    });

我有一个文档标识符 int 的原因是因为我计划让用户保存多个 dataPojo,我认为这将是稍后在另一个活动中识别/检索它们的最佳方法。我目前面临的问题是SharedPreferences 不允许我存储对象。如何使用特定标识符保存用户在内部创建的每个 pojo?谢谢!

【问题讨论】:

  • 您从未解释过您的问题。如果你想要示例代码,我猜那里有很多示例。

标签: java android pojo


【解决方案1】:

没有直接的方法可以将对象(PO​​JO)保存在SharedPreferences 中。但是,还有另一种可能将POJO 存储为JSON 字符串(请参阅this answer)。 使用这种方法,您只需要考虑它们的唯一键。

【讨论】:

  • 所以现在我的问题是我是否必须为每次保存创建一个新的 pojo,因为在保存数据后,我的 pojo 中的值将重置为默认值,以便用户可以创建另一个如果需要,请保存。
  • 是的,您需要创建一个新的 POJO 以将它们保存在 SharedPreference 中。最重要的是他们需要有不同的密钥。如果它们有唯一的键,它们将不会被覆盖。
  • 我认为对我来说更简单/更有效的方法是将它们存储在 Sql 数据库中。你的想法?
  • 如果你有很多(或者有可能),那么最好将它们存储在 SQLite db 中。但如果没有,您可以将它们保存在 SharedPreferences 中。
  • 是的,肯定会有很多。 SQL将是我要走的路。谢谢大家
【解决方案2】:

使用一些 ORM 免费软件库将它们存储在数据库中,例如 Sugar ORM

【讨论】:

  • 保存一个简单的 POJO 的所有开销?为什么?
  • @Simon 因为我昨天才知道 POJO 是什么,因此不知道有什么更简单的方法来创建/保存 POJO。你能帮忙吗?
  • 序列化 pojo 并使用 ObjectInputStream/ObjectOutputStream 将其保存到数据库中,如果您不想使用答案中所说的 ORM 或使用它(我个人喜欢 OrmLite ormlite.com )。
  • 最好不要序列化你的对象,那样会有各种各样的问题。如果可以接受,请使用一些 ORM。
猜你喜欢
  • 2013-12-25
  • 1970-01-01
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 2013-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多