Aller au contenu

Activity, Intent, passer un objet en paramètre


Pierre87

Recommended Posts

J'ai un petit soucis technique :

J'ai une Activity qu'on va appeller "List".

Elle contient "visuellement" une liste d' "Objet"

Mais elle a aussi un modèle de données avec une ArrayList d' "Objet" avec l'Adapter qui va bien

Je veux par exemple pouvoir éditer un élément de la liste en cliquant dessus :

- j'ai crée une Activity "Edit", le layout qui contient des champs de texte pour éditer mon "Objet"

- dans mon Activity "List", je crée un Intent, je lui "put" mon "Objet" en tant que Serializable

- dans mon Activity "Edit", je recupere mon "Objet", dans le onResume, je rempli les champs depuis l' "Objet", dans le onPause je rempli l' "Objet" depuis les champs

Sauf que : je me suis planté :P

Comme c'est du Serializable, j'ai 2 "Objet" différents : celui contenu dans la liste et celui que j'édite

Donc forcément, celui dans la liste n'est pas modifié :P

Je dois surement m'y prendre très mal, mais je pense que vous avez compris ce que je voulais faire.

Comment vous faites pour réaliser ça ?

Merci !

Lien vers le commentaire
Partager sur d’autres sites

Je viens de voir Parcelable, mais ça m'a l'air d'être un Serializable à la sauce Android...

Moi je veux garder la même "adresse mémoire"

Edit : je viens de penser à un truc tout bête :

je n'ai jamais 2 "Edit" en même temps

donc il me suffit d'une variable static dans Edit, et de lui filer mon "Objet" à chaques fois ...

Modifié par Pierre87
Lien vers le commentaire
Partager sur d’autres sites

bon ba pour info, ma technique "static" marche :P

pas forcement propre, mais très rapide !

en plus, il suffit qu'une fois que l'Activity Edit est crée, de copier "en local" (pas en static) l' "Objet" pour ne pas avoir de probleme.

Lien vers le commentaire
Partager sur d’autres sites

En base de données, ca me parait plus chaud...

Il faut avoir une fonction pour sérialiser / désérialiser ton objet en type simple que tu peux stocker dans ta base.

Ca fait du boulot pour pas grand chose si tu n'en as pas besoin à coté...

Pierre : Tu chipotes pour le 'en mémoire' :)

Emmanuel / Alocaly

Lien vers le commentaire
Partager sur d’autres sites

Je capte pas bien, mais j'ai l'impression que tu essaie de faire ce qui est déjà implémenté avec startActivityForResult()

http://developer.android.com/intl/fr/reference/android/app/Activity.html#startActivityForResult%28android.content.Intent,%20int%29

Et onActivityResult(..) pour lire l'Intent et actualiser ta liste quand l'édition est terminée.

Lien vers le commentaire
Partager sur d’autres sites

En gros, j'aurais bien aimé pouvoir passer la référence de mon objet dans l'Intent.

Mais ce n'est pas possible :P

Je ne voulais pas le Serializer, car ça n'aurait pas été le même objet "en mémoire"

Donc ce que j'ai fait :

- J'ai mis ma liste d' "Objet" dans un endroit "accessible à tous"

- Je transmets entre mes Activity l'index de l' "Objet" dans la liste

Lien vers le commentaire
Partager sur d’autres sites

je ne trouve pas le singleton adapté dans mon cas :s

et je n'aime pas l'utiliser, sauf dans des cas très précis ...

De toute manière, j'ai un objet Application, qui est accessible dans toutes mes Activity

Je m'en sert pour tout centraliser : reseau, vibration, liste de connexions, etc ...

Donc ça revient au même

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...