Autore Topic: Pacel di un object e polimorfismo  (Letto 658 volte)

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Pacel di un object e polimorfismo
« il: 16 Febbraio 2011, 10:52:26 CET »
0
Allora, premettendo che conosco il parcelable e ci ho smanettato un po dietro, mi trovo davanti un problema:

Ho 4 classi:
Feed
MaterialFeed
CommentFeed
QuestionFeed

Da come si può intuire,la prima è la classe base, le altre extendono la stessa implementando un paio di parametri in piu a testa.

Ora devo avviare un'activity e passargli un'oggetto via Intent, ma il tipo è arbitrario e dipende da dove l'user clicca.

Se faccio il parcel di feed poi alla lettura nella seconda activity troverò solo i dati di feed, mentre a me servono tutti (e devo capire il tipo)
Quello che mi piacerebbe fare è ottenere il Feed e poi fare if (feed instanceof CommentFeed) ecc, ma non credo sia possible facendo il parcel del tipo Feed generico.

La soluzione che ho pensato è salvare una String o un Int che mi identifica il tipo (1-material 2-comment 3-question) e poi in base a tale valore fare la lettura del parcel dell'oggetto corretto.

Secondo voi è questo il modo migliore di agire o ci sono modi piu puliti? sul web non ho trovato NIENTE. pare che parcel lo uso solo io...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Pacel di un object e polimorfismo
« Risposta #1 il: 16 Febbraio 2011, 10:58:24 CET »
0
c'è writeValue addesso che mi viene in mente:
Parcel | Android Developers
però poi ReadValue richiede un ClassLoader... Parcel | Android Developers
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Pacel di un object e polimorfismo
« Risposta #2 il: 16 Febbraio 2011, 12:26:29 CET »
+2
Ho fatto una piccola prova, magari vedi se ti può esser utile.

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Pacel di un object e polimorfismo
« Risposta #3 il: 16 Febbraio 2011, 15:01:43 CET »
0
Ho fatto una piccola prova, magari vedi se ti può esser utile.
è esattamente l'idea che avevo io, ma che poi da stupido non ho fatto...
Ho implementato Parcelable sulle figlie, ma non sulla madre, e chiaramente non potevo fare il getExtra della madre.
Poi per ridurre il codice ho fatto Parcelable anche la madre ma non ho piu provato!
comunque fighissimo il fatto che quando fa il read legge anche gli elementi "in piu" rispetto alla madre che si tenta di prendere dall'intent!
grazie mille ricky!!!
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia