example - parcelable android studio
Android Parcelable y Serializable (4)
El enlace proporcionado por Ajay es exactamente lo que estás buscando, cómo puedes hacerlo. Bien, lo que puede hacer es implementar Parcelable
en su CustomObject1
y crear una clase Parcelable
para él y luego puede usar esa clase Parcelable
para Parcel
it dentro de otra clase Parcelable
que Parcela ambos CustomObjects
.
public class CustomObject1 implements Parcelable {
// parcelable code CustomObject1
}
public class CustomObject2 implements Parcelable {
private CustomObject1 obj1;
// add CustomObject1 here with getter setter
// parcelable code for CustomObject2
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(obj1, flags);
}
private void readFromParcel(Parcel in) {
obj1 = in.readParcelable(CustomObject1.class.getClassLoader());
}
............
}
Así que sé que se recomienda usar Parcelable en lugar de Serializable en Android, porque es más rápido.
Mi pregunta es: ¿es imposible evitar el uso de Serializable, verdad?
Si tengo un objeto personalizado que quiero serializar, digamos que tengo la siguiente definición de clase
public class Person {
String name;
int Age;
...
....
}
Hacer esto parcelable es fácil, porque la clase Person contiene los tipos que parcel.write * () admite, es decir, hay parcel.writeString y parcel.writeInt
Ahora, ¿qué pasa si la clase Persona es la siguiente?
public class PersonTwo {
MyCustomObj customObj;
String name;
int Age;
...
....
}
¿Cómo se supone que debo parcelar el objeto MyCustomObj? Parece que necesito usar serializable de nuevo? pero, nuevamente, pensé que es LENTO usar serializable, y parece que no tenemos más remedio que usarlo en este caso.
No entiendo
¿alguien me puede decir cómo repartiría PersonTwo en este caso?
Llegué al punto donde Parcelable es un problema para mí. En Android 4.3, estoy obteniendo una excepción deslumbrante, al pasar datos entre Actividades como Parcelable. Funciona bien en Android 4.0, 4.2 o 4.4. Debería funcionar cuando se cambia a Serializable, aunque es más lento.
Necesita hacer MyCustomObj parcelable.
Todos los objetos compuestos también deben ser Parcelable. En caso de que quiera omitir un objeto, no lo use el método writeToParcel.