2010-09-02 13 views

risposta

3

Dipende se si desidera salvare il file su un supporto interno o esterno. Per entrambi situazione ci sono grandi campioni in loco DEV Android: http://developer.android.com/guide/topics/data/data-storage.html - questo dovrebbe sicuramente aiutare

+0

Voglio salvarlo in interno. Sto guardando ObjectOutputStream adesso e sembra interessante ma non so perché, non posso ottenere "fos = openFileOutput (filename, Context.MODE_PRIVATE);" per funzionare, non accetta il mio parametro String filename ... cosa diavolo ???? – Fabien

+0

Ive ha scoperto che è un problema di contesto. – Fabien

0

Ecco un esempio collaudato di suggestione @ di yayay. Si noti che l'utilizzo di readObject() restituisce un Object, quindi sarà necessario eseguire il cast, anche se il compilatore si lamenterà che si tratta di un cast non controllato. Posso ancora eseguire il mio codice bene però. Puoi leggere ulteriori informazioni sul problema del casting here.

Basta fare in modo che la classe (nel mio caso, ListItemsModel) è serializzabile, perché il writeObject() sarà serializzare l'oggetto, e il readObject() si deserializzare esso. Se non lo è (non ottieni persistenza e il logcat lancia un NotSerializableException), assicurati che la tua classe implementa java.io.Serializable e sei a posto. Nota, nessun metodo deve essere implementato in questa interfaccia. Se la tua classe non può implementare Serializable e lavorare (ad esempio classi di librerie di terze parti), this link ti aiuta a serializzare il tuo oggetto.

private void readItems() { 

     FileInputStream fis = null; 
     try { 
      fis = openFileInput("groceries"); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     try { 
      ObjectInputStream ois = new ObjectInputStream(fis); 
      ArrayList<ListItemsModel> list = (ArrayList<ListItemsModel>) ois.readObject(); 
     } catch (IOException | ClassNotFoundException e) { 
      e.printStackTrace(); 
} 

private void writeItems() { 

     FileOutputStream fos = null; 
     try { 
      fos = openFileOutput("groceries", Context.MODE_PRIVATE); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 
     try { 
      ObjectOutputStream oos = new ObjectOutputStream(fos); 
      oos.writeObject(itemsList); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
} 
Problemi correlati