2015-01-25 2 views
-1

как заголовок подсказывает, что мне не удается сохранить pojo на моем внутреннем хранилище телефонов через 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, потому что я планирую иметь пользователю сохранить несколько dataPojos, и я решил, что это лучший способ идентифицировать/получить их позже в другой активности. Текущая проблема, с которой я столкнулась, - SharedPreferences, не позволит мне хранить объект. Как я могу сохранить каждое pojo, созданное пользователем внутри, с определенным идентификатором? Благодаря!

+2

Вы никогда не объясняли свою проблему. Если вам нужен пример кода, я предполагаю, что есть много примеров. – keyser

ответ

1

хранить их в базе данных, используя некоторый ORM бесплатной библиотеку, такие как Sugar ORM

+0

Все, что накладные расходы, чтобы сохранить простой POJO? Зачем? – Simon

+0

@Simon Потому что я только что узнал, что такое POJO вчера, и поэтому не знаю, какой простой способ создать/сохранить его. Вы можете помочь? – Ethan

+0

Сериализуйте pojo и используйте ObjectInputStream/ObjectOutputStream, чтобы сохранить его в db, если вы не хотите использовать ORM, как было сказано в ответ или использовать его (мне лично нравится OrmLite http://ormlite.com/). –

1

Там нет прямого способа сохранить объекты (POJO в) в SharedPreferences. Однако есть еще одна возможность хранить POJO как строка JSON (см. this answer). Используя этот подход, вам просто нужно подумать об уникальных ключах для них.

+0

Итак, теперь мой вопрос заключается в том, нужно ли мне создавать новое pojo для каждого сохранения, потому что после сохранения данных значения в моем pojo будут возвращены к умолчанию, чтобы пользователь мог создать другое сохранение, если это необходимо. – Ethan

+0

Да, вам нужно создать новый POJO, чтобы сохранить их в SharedPreference. Самое главное, что им нужно иметь разные ключи. Если у них будут уникальные ключи, они не будут перезаписаны. –

+0

Я думаю, что более простой/эффективный способ сделать это для меня - хранить их в базе данных Sql. Твои мысли? – Ethan

Смежные вопросы