J'essaie de rendre mes objets parcelables. Cependant, j'ai des objets personnalisés et ces objets ont des propriétés ArrayList
des attributs d'autres objets personnalisés que j'ai fabriqués.
Quelle serait la meilleure façon de procéder ?
J'essaie de rendre mes objets parcelables. Cependant, j'ai des objets personnalisés et ces objets ont des propriétés ArrayList
des attributs d'autres objets personnalisés que j'ai fabriqués.
Quelle serait la meilleure façon de procéder ?
Android parcable présente des caractéristiques uniques. Celles-ci sont présentées ci-dessous :
Exemple : Pour qu'une classe soit Parceble, il faut qu'elle soit implémentée Parceble. Percable a 2 méthodes :
int describeContents();
void writeToParcel(Parcel var1, int var2);
Supposons que vous ayez une classe Personne et qu'elle comporte 3 champs, prénom, nom et âge. Après avoir implémenté l'interface Parceble, cette interface est décrite ci-dessous :
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable{
private String firstName;
private String lastName;
private int age;
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(firstName);
parcel.writeString(lastName);
parcel.writeInt(age);
}
}
Ici writeToParcel
nous écrivons/ajoutons des données sur les colis dans un ordre. Ensuite, nous devons ajouter le code ci-dessous pour lire les données du colis :
protected Person(Parcel in) {
firstName = in.readString();
lastName = in.readString();
age = in.readInt();
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel in) {
return new Person(in);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
Ici, la classe de personnes prend un colis et obtient des données dans le même ordre pendant l'écriture.
Maintenant, pendant l'intention getExtra
y putExtra
est donné ci-dessous :
Ajouter un supplément :
Person person=new Person();
person.setFirstName("First");
person.setLastName("Name");
person.setAge(30);
Intent intent = new Intent(getApplicationContext(), SECOND_ACTIVITY.class);
intent.putExtra()
startActivity(intent);
Obtenez un supplément :
Person person=getIntent().getParcelableExtra("person");
La classe de personne complète est donnée ci-dessous :
import android.os.Parcel;
import android.os.Parcelable;
public class Person implements Parcelable{
private String firstName;
private String lastName;
private int age;
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return age;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(firstName);
parcel.writeString(lastName);
parcel.writeInt(age);
}
protected Person(Parcel in) {
firstName = in.readString();
lastName = in.readString();
age = in.readInt();
}
public static final Creator<Person> CREATOR = new Creator<Person>() {
@Override
public Person createFromParcel(Parcel in) {
return new Person(in);
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};
}
Hope this will help you
Thanks :)
Bien que cet extrait de code puisse résoudre la question, y compris une explication contribue réellement à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question pour les lecteurs à venir, et que ces derniers pourraient ne pas connaître les raisons de votre suggestion de code. Essayez également de ne pas encombrer votre code de commentaires explicatifs, car cela réduit la lisibilité du code et des explications !
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.