Guardar datos de matriz

tengo problema para salvar a mi arraylist. Quiero guardar mi arraylist cuando la aplicación destruye o cambia la intención o cambia la orientación:

public class AuditContainer implements Serializable { private Paint mPaint; private Path mPath; private int x,y; private String text; boolean is_text; 

Primero intenté ahorrar en archivo, pero la clase de la pintura no es clase de Serializable. En segundo lugar intento con onSaveInstanceState (Bundle outState) / onRestoreInstanceState (Bundle savedInstanceState) pero no pude guardar Arraylist y tercero intento con la base de datos pero no hay ningún tipo de Paint, Path … Si alguien tiene sugerencia para mí, voy a ser muy feliz.

Tienes tres opciones:

A. Modifique la Paint para implementar Serializable .
B. Marque el campo como no para la serialización usando la palabra clave transient :

 private transient Paint mPaint; 

C. Escriba su propio contenedor de Serializable para Paint que almacene copias Serializable de los campos clave y delega la funcionalidad a un Paint transitorio privado y puede reinicializar la instancia de Paint después de la deserialización.

Si Paint y Path son clases bajo tu control, hazlas también serializables. Si no son completamente relevantes o puedes determinarlas externamente cuando lees el objeto, entonces puedes hacer que los campos sean transient .

Para omitir la serialización de campos no serializables, márquelos como transient :

 public class AuditContainer implements Serializable { private transient Paint mPaint; private transient Path mPath; private int x,y; private String text; boolean is_text; } 

Probablemente hay datos sobre los Paint mPaint y Path mPath que todavía desea almacenar en serialización y recuperar en procesos de deserialización, para ello debe implementar los métodos writeObject y readObject :

 private void writeObject(ObjectOutputStream out) throws IOException { //default serialization of the object out.defaultWriteObject(); //start manual serialization out.writeInt(mPaint.getX()); out.writeInt(mPaint.getY()); out.writeObject(mPath.getPath()); } private void readObject(ObjectInputStream in) throws IOException { //default serialization of the object in.defaultReadObject(); //start manual deserialization int x = in.readInt(); int y = in.readInt(); String path = (String)in.readObject(); //initialize your fields... //note: this code maybe won't work, you should adapt it to your needs mPaint = new Paint(x, y); mPath = new Path(path); } 

Puede utilizar terceros como XStream.It permite utilizar para guardar el objeto en xml, y no es necesario que el objeto debe ser serializable. Tuvimos similair problema en nuestra empresa (clase que no se puede modificar y debe ser guardado) y XStream nos ayudó. Por favor, consulte: http://x-stream.github.io/tutorial.html para un sencillo tutorial.

  • ¿Qué está mal con mi código PhysicsRemoveExample.java (AndEngine)?
  • Android ViewPager - agregar presentación de diapositivas con animación de fade-in / out para cambiar entre vistas
  • Avd para Samsung Galaxy S4 no funciona
  • Comunicación del cliente del servidor TCP de Android
  • Desarrollo de Android: ¿Cómo usar onKeyUp?
  • Cadena está siendo truncado cuando es demasiado largo
  • ¿Cómo funciona la sincronización de Firebase con datos compartidos?
  • Oyente de red Android
  • Biblioteca nativa de Android que se enlaza con otra biblioteca nativa desde aar
  • Cómo configurar la imagen con efecto en ImageButton antes de hacer clic
  • Abstracción con Java en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.