Search code examples
androidandroid-intentparcelable

sending a customized object to intent android


I want to pass an object of type Annonce to an Intent. As you can see, it's simple if the class attributes are primitives, However; in my case I have an image (Bitmap) and an attribute of type Client ( I have created a Client class). My solution is to access the Client attributes (using getter and setter) and parsing it in the writeToParcel method one by one (it takes too much time), and for the image, I am sending it in the mainActivity using ByteArrayOutputStream. Can anyone help me do it all in Annonce class.

public class Annonce implements Parcelable {

    String article, desc, temps, ville, categorie;
    int prix;
    Bitmap img;
    Client c;

    public Annonce(String article, String desc, String temps, String ville,
            String categorie, int prix, Bitmap img, Client c) {
        this.article = article;
        this.desc = desc;
        this.c = c;
        this.prix = prix;
        this.img = img;
        this.temps = temps;
        this.categorie = categorie;
        this.ville = ville;
    }

    public static final Parcelable.Creator<Annonce> CREATOR = new Parcelable.Creator<Annonce>() {

        public Annonce createFromParcel(Parcel source) {
            return new Annonce(source);
        }

        public Annonce[] newArray(int size) {
            return new Annonce[size];
        }
    };

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(article);
        parcel.writeString(desc);
        parcel.writeString(temps);
        parcel.writeString(ville);
        parcel.writeString(categorie);
        parcel.writeInt(prix);
    }

    public Annonce(Parcel source) {
        article = source.readString();
        desc = source.readString();
        temps = source.readString();
        ville = source.readString();
        categorie = source.readString();
        prix = source.readInt();
    }
}

Solution

  • Having an attribut of type "bitmap" is not a good solution . Instead of that , we can use the path of the image to refer to the bitmap image . Also, we can convert the Client into object in parcelable in order to send it through intent.