2010-09-02 3 views
0

Je veux sérialiser ma classe. J'ai ce code:comment sérialiser manuellement un cours?

public class Video implements Serializable{ 
public long videoId; 
public String title; 
public String publisher; 
public String language; 
public Date lastModified; 
public Date published; 
public String imageUrl; 
public String url; 
public Bitmap myVideoScreenshotBm; 
//public Drawable myVideoScreenshotDrawable; 

public CedemoVideo (long newVideoId) { 
    this.videoId=newVideoId; 
} 

}

En ce que j'ai le contrôle Je reçois NotSerializableException à cause de la variable Bitmap.

J'ai besoin apparemment à mettre en œuvre:

private void writeObject(java.io.ObjectOutputStream out) throws IOException 

private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException 

Quelqu'un sait ce que je dois faire dans ces fonctions ?? Comment dois-je écrire ma variable Bitmap? Des exemples de code? Quelqu'un l'a fait?

Répondre

1

Lors de la sérialisation de la variable bitmap, il suffit de sérialiser l'URL de la bitmap. La désérialisation doit utiliser cette URL pour construire le champ bitmap réel.

+0

Eh bien, ce exactement ce que im en essayant d'éviter. Je ne veux pas re-télécharger le bitmap à partir d'Internet. Je veux l'enregistrer et le restaurer quand j'en ai besoin. Comment écrire un objet Bitmap sur un ObjectOutputStream? – Fabien

+0

Envisagez de convertir le bitmap en un tableau d'octets. Lors de la désérialisation, lisez le tableau d'octets du système de fichiers et construisez le bitmap. Possible dans android? – chedine

+0

http://www.coderanch.com/t/449045/Android/Mobile/byte-image. Peut être cela aide – chedine