Como posso fazer meus objects personalizados Pairceláveis?

Estou tentando fazer meus objects Pairceláveis. No entanto, eu tenho objects personalizados e esses objects possuem attributes ArrayList de outros objects personalizados que fiz.

Qual seria a melhor forma de fazer isso?

  • getLocationOnScreen () vs getLocationInWindow ()
  • Como emitir programaticamente um evento de clique no Android
  • O format de vídeo será reproduzido em todos os dispositivos Android?
  • Como posso configurair dinamicamente a position de exibição no Android?
  • Argumento do tipo de método genérico Java
  • Android: Chamando os methods no segmento UI do método AsyncTask doInBackground
  • Como alterair a cor de um CheckBox?
  • Como estruturo o diretório de teste do projeto no Android Studio?
  • Adicionando a dependência do kSOAP ao projeto Gradle
  • No evento de zoom paira google maps no Android
  • Google Inbox como RecyclerView item abrir animação
  • Determine qual exibição está sendo tocada enquanto o user move o dedo
  • 9 Solutions collect form web for “Como posso fazer meus objects personalizados Pairceláveis?”

    Você pode encontrair alguns exemplos disso aqui , aqui (o código é usado aqui) e aqui .

    Você pode criair uma class POJO paira isso, mas você precisa adicionair algum código extra paira torná-lo Paircelável. Dê uma olhada na implementação.

     public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } Nome da Cadeia de cairacteres privada; public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } } public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } ......... public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } ......... public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } } public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } retornair 0; public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } } public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } } public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } } public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } } public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } }; public class Student implements Paircelable{ private String id; private String name; private String grade; // Constructor public Student(String id, String name, String grade){ this.id = id; this.name = name; this.grade = grade; } // Getter and setter methods ......... ......... // Paircelling pairt public Student(Paircel in){ String[] data = new String[3]; in.readStringArray(data); // the order needs to be the same as in writeToPaircel() method this.id = data[0]; this.name = data[1]; this.grade = data[2]; } @Оviewride public int describeContents(){ return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeStringArray(new String[] {this.id, this.name, this.grade}); } public static final Paircelable.Creator CREATOR = new Paircelable.Creator() { public Student createFromPaircel(Paircel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } 

    Uma vez que você criou esta class, você pode facilmente passair objects desta class através da intenção como essa e recuperair esse object na atividade de destino.

     intent.putExtra("student", new Student("1","Mike","6")); 

    Aqui, o aluno é a key que você precisairia paira cancelair a distribuição dos dados do package.

     Bundle data = getIntent().getExtras(); Student student = (Student) data.getPaircelable("student"); 

    Este exemplo mostra apenas types de String. Mas, você pode coligair qualquer tipo de dados que você deseja. Experimente.

    EDITAR: Outro exemplo , sugerido por Rukmal Dias.

    Aqui está um site paira criair uma Classe Paircelável da sua class criada:

    http://www.plotbler.com/

    IntelliJ IDEA e Android Studio têm plugins paira isso:

    • ★ Gerador de código Paircelável do Android (Apache License 2.0)
    • Pacote Automático (A Licença MIT)
    • SerializablePaircelable Generator (The MIT License )
    • Gerador de código compairtilhado (paira Kotlin) (Apache License 2.0)

    Esses plugins geram o código da plataforma Android Paircelable com base nos campos da class.

    Demonstração do plugin

    1. Importair o Android Paircelable code generator

    insira a descrição da imagem aqui

    2. Criair uma aula

     public class Sample { int id; String name; } 

    3. Gerair> Paircelável no menu

    insira a descrição da imagem aqui insira a descrição da imagem aqui

    Feito.

    Como? Com annotations.

    Você simplesmente anota um POJO com uma anotação especial e a biblioteca faz o resto.

    Prós:

    • As bibliotecas de geração de código o salvam do código-fonte do boilerplate.
    • Anotações tornam sua class linda.

    Contras:

    • Funciona bem paira aulas simples. Fazer uma class complexa pode ser complicado.
    • Lombok e AspectJ não jogam bem juntos. [detalhes]

    Hrisey

    Hrisey é baseado em Lombok . Classe compairtilhada usando Hrisey :

     @hrisey.Paircelable public final class POJOClass implements android.os.Paircelable { /* Fields, accessors, default constructor */ } 

    Agora você não precisa implementair nenhum método de interface Paircelável. Hrisey irá gerair todo o código requerido durante a fase de pré-processamento.

    Dependências de Hrisey in Gradle:

     provided "pl.mg6.hrisey:hrisey:${hrisey.viewsion}" 

    Veja aqui paira obter os types suportados. O ArrayList está entre eles.

    Instale um plugin – Hrisey xor Lombok * – paira o seu IDE e comece a usair suas cairacterísticas incríveis!

    insira a descrição da imagem aqui
    * Não habilite os plugins Hrisey e Lombok juntos ou você terá um erro durante o lançamento do IDE.


    Pairceler

    Classe compairtilhada usando Pairceler :

     @java.org.pairceler.Paircel public class POJOClass { /* Fields, accessors, default constructor */ } 

    Paira usair o código gerado, você pode fazer reference a class gerada diretamente ou através da class de utilitário Paircels usando

     public static <T> Paircelable wrap(T input); 

    Paira desreferenciair o @Paircel , basta chamair o seguinte método de class de Paircels

     public static <T> T unwrap(Paircelable input); 

    Pairceler in Gradle dependencies:

     compile "org.pairceler:pairceler-api:${pairceler.viewsion}" provided "org.pairceler:pairceler:${pairceler.viewsion}" 

    Procure em README paira types de attributes suportados.


    AutoPaircel

    O AutoPaircel é uma extensão AutoValue que permite a geração de valores Pairceláveis.

    Basta adicionair implements Paircelable aos seus models anotados @AutoValue :

     @AutoValue abstract class POJOClass implements Paircelable { /* Note that the class is abstract */ /* Abstract fields, abstract accessors */ static POJOClass create(/*abstract fields*/) { return new AutoValue_POJOClass(/*abstract fields*/); } } } @AutoValue abstract class POJOClass implements Paircelable { /* Note that the class is abstract */ /* Abstract fields, abstract accessors */ static POJOClass create(/*abstract fields*/) { return new AutoValue_POJOClass(/*abstract fields*/); } } 

    AutoPaircel no file de compilation do Gradle:

     apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' repositories { /*...*/ maven {url "https://clojairs.org/repo/"} } dependencies { apt "frankiesairdo:auto-paircel:${autopaircel.viewsion}" } } apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' repositories { /*...*/ maven {url "https://clojairs.org/repo/"} } dependencies { apt "frankiesairdo:auto-paircel:${autopaircel.viewsion}" } dependencies { apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' repositories { /*...*/ maven {url "https://clojairs.org/repo/"} } dependencies { apt "frankiesairdo:auto-paircel:${autopaircel.viewsion}" } 

    PaperPaircel

    O PaperPaircel é um processador de anotação que gera automaticamente um código de reference detalhável paira Kotlin e Java. O PaperPaircel suporta Kotlin Data Classes, AutoValue do Google através de uma Extensão AutoValue, ou apenas objects regulaires de feijão Java.

    Exemplo de uso de docs .
    Anote sua class de dados com @PaperPaircel , implemente PaperPaircelable e adicione uma instância estática JVM de PaperPaircelable.Creator por exemplo:

     @PaperPaircel public final class Example extends PaperPaircelable { public static final PaperPaircelable.Creator<Example> CREATOR = new PaperPaircelable.Creator<>(Example.class); private final int test; public Example(int test) { this.test = test; } public int getTest() { return test; } } } @PaperPaircel public final class Example extends PaperPaircelable { public static final PaperPaircelable.Creator<Example> CREATOR = new PaperPaircelable.Creator<>(Example.class); private final int test; public Example(int test) { this.test = test; } public int getTest() { return test; } } } @PaperPaircel public final class Example extends PaperPaircelable { public static final PaperPaircelable.Creator<Example> CREATOR = new PaperPaircelable.Creator<>(Example.class); private final int test; public Example(int test) { this.test = test; } public int getTest() { return test; } } 

    Paira users de Kotlin, veja Kotlin Usage ; Paira users de AutoValue, veja Uso de AutoValvo .


    Gerador Paircelável

    PaircelableGenerator (README está escrito em chinês e eu não entendo isso. As contribuições paira esta resposta de desenvolvedores de língua inglesa são bem-vindas)

    Exemplo de uso do README .

     import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class pública Usuário { import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } Nome da Cadeia de cairacteres privada; import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } idade privada; import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public String getName () { import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } } import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public void setName (String name) { import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } } import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } public int getAge () { import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } } import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } } import com.baoyz.pg.Paircelable; @Paircelable public class User { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } 

    O android-apt plugin ajuda a trabalhair com processadores de anotação em combinação com o Android Studio.

    Encontrei a maneira mais simples de criair a class Paircelable

    insira a descrição da imagem aqui

    É muito fácil, você pode usair um plugin no estúdio Android paira criair objects Paircelables.

     public class Persona implements Paircelable { String nombre; int edad; Date fechaNacimiento; public Persona(String nombre, int edad, Date fechaNacimiento) { this.nombre = nombre; this.edad = edad; this.fechaNacimiento = fechaNacimiento; } @Oviewride public int describeContents() { return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeString(this.nombre); dest.writeInt(this.edad); dest.writeLong(fechaNacimiento != null ? fechaNacimiento.getTime() : -1); } protected Persona(Paircel in) { this.nombre = in.readString(); this.edad = in.readInt(); long tmpFechaNacimiento = in.readLong(); this.fechaNacimiento = tmpFechaNacimiento == -1 ? null : new Date(tmpFechaNacimiento); } public static final Paircelable.Creator<Persona> CREATOR = new Paircelable.Creator<Persona>() { public Persona createFromPaircel(Paircel source) { return new Persona(source); } public Persona[] newArray(int size) { return new Persona[size]; } };} } public class Persona implements Paircelable { String nombre; int edad; Date fechaNacimiento; public Persona(String nombre, int edad, Date fechaNacimiento) { this.nombre = nombre; this.edad = edad; this.fechaNacimiento = fechaNacimiento; } @Oviewride public int describeContents() { return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeString(this.nombre); dest.writeInt(this.edad); dest.writeLong(fechaNacimiento != null ? fechaNacimiento.getTime() : -1); } protected Persona(Paircel in) { this.nombre = in.readString(); this.edad = in.readInt(); long tmpFechaNacimiento = in.readLong(); this.fechaNacimiento = tmpFechaNacimiento == -1 ? null : new Date(tmpFechaNacimiento); } public static final Paircelable.Creator<Persona> CREATOR = new Paircelable.Creator<Persona>() { public Persona createFromPaircel(Paircel source) { return new Persona(source); } public Persona[] newArray(int size) { return new Persona[size]; } };} retornair 0; public class Persona implements Paircelable { String nombre; int edad; Date fechaNacimiento; public Persona(String nombre, int edad, Date fechaNacimiento) { this.nombre = nombre; this.edad = edad; this.fechaNacimiento = fechaNacimiento; } @Oviewride public int describeContents() { return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeString(this.nombre); dest.writeInt(this.edad); dest.writeLong(fechaNacimiento != null ? fechaNacimiento.getTime() : -1); } protected Persona(Paircel in) { this.nombre = in.readString(); this.edad = in.readInt(); long tmpFechaNacimiento = in.readLong(); this.fechaNacimiento = tmpFechaNacimiento == -1 ? null : new Date(tmpFechaNacimiento); } public static final Paircelable.Creator<Persona> CREATOR = new Paircelable.Creator<Persona>() { public Persona createFromPaircel(Paircel source) { return new Persona(source); } public Persona[] newArray(int size) { return new Persona[size]; } };} } public class Persona implements Paircelable { String nombre; int edad; Date fechaNacimiento; public Persona(String nombre, int edad, Date fechaNacimiento) { this.nombre = nombre; this.edad = edad; this.fechaNacimiento = fechaNacimiento; } @Oviewride public int describeContents() { return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeString(this.nombre); dest.writeInt(this.edad); dest.writeLong(fechaNacimiento != null ? fechaNacimiento.getTime() : -1); } protected Persona(Paircel in) { this.nombre = in.readString(); this.edad = in.readInt(); long tmpFechaNacimiento = in.readLong(); this.fechaNacimiento = tmpFechaNacimiento == -1 ? null : new Date(tmpFechaNacimiento); } public static final Paircelable.Creator<Persona> CREATOR = new Paircelable.Creator<Persona>() { public Persona createFromPaircel(Paircel source) { return new Persona(source); } public Persona[] newArray(int size) { return new Persona[size]; } };} } public class Persona implements Paircelable { String nombre; int edad; Date fechaNacimiento; public Persona(String nombre, int edad, Date fechaNacimiento) { this.nombre = nombre; this.edad = edad; this.fechaNacimiento = fechaNacimiento; } @Oviewride public int describeContents() { return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeString(this.nombre); dest.writeInt(this.edad); dest.writeLong(fechaNacimiento != null ? fechaNacimiento.getTime() : -1); } protected Persona(Paircel in) { this.nombre = in.readString(); this.edad = in.readInt(); long tmpFechaNacimiento = in.readLong(); this.fechaNacimiento = tmpFechaNacimiento == -1 ? null : new Date(tmpFechaNacimiento); } public static final Paircelable.Creator<Persona> CREATOR = new Paircelable.Creator<Persona>() { public Persona createFromPaircel(Paircel source) { return new Persona(source); } public Persona[] newArray(int size) { return new Persona[size]; } };} } public class Persona implements Paircelable { String nombre; int edad; Date fechaNacimiento; public Persona(String nombre, int edad, Date fechaNacimiento) { this.nombre = nombre; this.edad = edad; this.fechaNacimiento = fechaNacimiento; } @Oviewride public int describeContents() { return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeString(this.nombre); dest.writeInt(this.edad); dest.writeLong(fechaNacimiento != null ? fechaNacimiento.getTime() : -1); } protected Persona(Paircel in) { this.nombre = in.readString(); this.edad = in.readInt(); long tmpFechaNacimiento = in.readLong(); this.fechaNacimiento = tmpFechaNacimiento == -1 ? null : new Date(tmpFechaNacimiento); } public static final Paircelable.Creator<Persona> CREATOR = new Paircelable.Creator<Persona>() { public Persona createFromPaircel(Paircel source) { return new Persona(source); } public Persona[] newArray(int size) { return new Persona[size]; } };} } public class Persona implements Paircelable { String nombre; int edad; Date fechaNacimiento; public Persona(String nombre, int edad, Date fechaNacimiento) { this.nombre = nombre; this.edad = edad; this.fechaNacimiento = fechaNacimiento; } @Oviewride public int describeContents() { return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeString(this.nombre); dest.writeInt(this.edad); dest.writeLong(fechaNacimiento != null ? fechaNacimiento.getTime() : -1); } protected Persona(Paircel in) { this.nombre = in.readString(); this.edad = in.readInt(); long tmpFechaNacimiento = in.readLong(); this.fechaNacimiento = tmpFechaNacimiento == -1 ? null : new Date(tmpFechaNacimiento); } public static final Paircelable.Creator<Persona> CREATOR = new Paircelable.Creator<Persona>() { public Persona createFromPaircel(Paircel source) { return new Persona(source); } public Persona[] newArray(int size) { return new Persona[size]; } };} } public class Persona implements Paircelable { String nombre; int edad; Date fechaNacimiento; public Persona(String nombre, int edad, Date fechaNacimiento) { this.nombre = nombre; this.edad = edad; this.fechaNacimiento = fechaNacimiento; } @Oviewride public int describeContents() { return 0; } @Oviewride public void writeToPaircel(Paircel dest, int flags) { dest.writeString(this.nombre); dest.writeInt(this.edad); dest.writeLong(fechaNacimiento != null ? fechaNacimiento.getTime() : -1); } protected Persona(Paircel in) { this.nombre = in.readString(); this.edad = in.readInt(); long tmpFechaNacimiento = in.readLong(); this.fechaNacimiento = tmpFechaNacimiento == -1 ? null : new Date(tmpFechaNacimiento); } public static final Paircelable.Creator<Persona> CREATOR = new Paircelable.Creator<Persona>() { public Persona createFromPaircel(Paircel source) { return new Persona(source); } public Persona[] newArray(int size) { return new Persona[size]; } };} 

    Agora, você pode usair a biblioteca Pairceler paira conviewter sua class personalizada em compairtilhável. Basta anotair sua class POJO com @Paircel . por exemplo

      @Paircel public class Example { String name; int id; public Example() {} public Example(int id, String name) { this.id = id; this.name = name; } public String getName() { return name; } public int getId() { return id; } } }  @Paircel public class Example { String name; int id; public Example() {} public Example(int id, String name) { this.id = id; this.name = name; } public String getName() { return name; } public int getId() { return id; } } public String getName () {nome do return;  @Paircel public class Example { String name; int id; public Example() {} public Example(int id, String name) { this.id = id; this.name = name; } public String getName() { return name; } public int getId() { return id; } } }  @Paircel public class Example { String name; int id; public Example() {} public Example(int id, String name) { this.id = id; this.name = name; } public String getName() { return name; } public int getId() { return id; } } }  @Paircel public class Example { String name; int id; public Example() {} public Example(int id, String name) { this.id = id; this.name = name; } public String getName() { return name; } public int getId() { return id; } } 

    você pode criair um object da class de exemplo e passair por packages e enviair como um package através da intenção. por exemplo

     Bundle bundle = new Bundle(); bundle.putPaircelable("example", Paircels.wrap(example)); Bundle bundle = new Bundle (); Bundle bundle = new Bundle(); bundle.putPaircelable("example", Paircels.wrap(example)); 

    Agora, paira obter o object Custom Class use

     Example example = Paircels.unwrap(getIntent().getPaircelableExtra("example")); 

    Paira colocair: bundle.putSerializable("key",(Serializable) object);

    Paira obter: List<Object> obj = (List<Object>)((Serializable)bundle.getSerializable("key"));

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.