2011-11-19 13 views
7

quindi sto implementando un'app di test in cui creerò un oggetto Tournament come Parcelable e li passerò tra gli intent. Un torneo include: . Nome del torneo . Regola . Regola per la corrispondenza dei giocatori (casuale/manuale) . Una lista di array di giocatoriImplementazione Android Parcelable con ArrayList <Object>

Questo è quello che ho finora:

Tournament.java

public class TournamentData implements Parcelable { 
private String tourName; 
private int bestOf; 
private boolean isRandom; 
private ArrayList<Player> playerList; 

public TournamentData(String name, int tourBestOf, boolean random) { 
    this.tourName = name; 
    this.bestOf = tourBestOf; 
    this.isRandom = random; 
} 

public void addPlayer(Player newPlayer) { 
    this.playerList.add(newPlayer); 
} 

public ArrayList<Player> getPlayerList() { 
    return playerList; 
} 

    /* getters and setters excluded from code here */ 

    public int describeContents() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

public void writeToParcel(Parcel out, int flags) { 
    // TODO Auto-generated method stub 

} 

Player.java

public class Player { 

private String playerName; 
private String playerEmail; 

public Player(String name, String email) { 
    this.playerName = name; 
    this.playerEmail = email; 
} 
    /* getter and setters are excluded */ 

}

Io a m nuovo ad Android (intendo molto molto nuovo; 10 ore in esso immagino). Quindi mi chiedo: . È possibile creare un oggetto Parcelable, date le specifiche dell'oggetto Tournament che ha ArrayList? . Come memorizzare tutti i dati del torneo in un oggetto Parcelable e accedervi dall'altra attività? (vale a dire A e B).

+2

checkout questa risposta che ha esempio completo per il modo di parse arrayList usando Parcelable. http://stackoverflow.com/questions/7400564/android-parcelable-retailerorderactivity-java-return-null/7400675#7400675 –

+0

@LalitPoptani: Così anche l'oggetto giocatore deve essere Parcelable? –

+0

sì è meglio farlo. –

risposta

0

un sacco di queste cose risultano essere RPC di - avrei scritto la maggior parte del lavoro nel tradizionale Java quindi provare a fare il sì ......

, abbastanza sicuro:

Contenitore per un messaggio (dati e riferimenti a oggetti) che è possibile inviare tramite un IBinder. Una parcella può contenere sia dati appiattiti che non vengono appiattiti dall'altro lato dell'IPC (utilizzando qui i vari metodi per scrivere tipi specifici, o l'interfaccia generale Parcelable), e riferimenti a oggetti IBinder dal vivo che si tradurranno nell'altro lato ricevendo un IBinder proxy collegato all'IBinder originale nel pacco.

in altre parole Parcel è una forma di comunicazione tra processi ....

è necessario ripensare il modello di base come questo non è un 10.000 richieste di un secondo server - di cosa si tratta è una mano dispositivo consumer -held che può solo tirare i puntatori fuori dal tavolo processo se ha a causa della cui opera

ho imparato ad andare alla scheda blog a http://android-developers.blogspot.com/?hl=en

essere molto attenti a non forare la voce in profondità in cose che devono essere in thread di lavoro e no Te le ricche primitive di sincronizzazione che Java rende facile da usare

multithreading per le prestazioni

Scritto da Tim Bray il 19 luglio 2010 alle 11:41 [Questo post è di Gilles Debunne, un ingegnere nel gruppo Android che ama diventare multitasking.- Tim Bray]

è nei blog --- molto migliore posto per iniziare

2

qui è il codice che mostrano come parcle un'arraylist

public class ParcleListTopic implements Parcelable{ 
    private List<ParcleTopic> list; 
    private ArrayList<HoldListTopic> listh=new ArrayList<HoldListTopic>(); 
    public ArrayList<HoldListTopic> GetListTopic() 
    { 
     for(int i=0;i<list.size();i++) 
     { 
      listh.add(list.get(i).GetHold()); 
     } 
     return listh; 
    } 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeTypedList(list); 
    } 
    public ParcleListTopic(Parcel in) 
    { 
     in.readTypedList(list,ParcleTopic.CREATOR); 

    } 
    public ParcleListTopic(List<ParcleTopic> list) 
    { 
     this.list=list; 
    } 
    public static final Parcelable.Creator<ParcleListTopic> CREATOR = new Parcelable.Creator<ParcleListTopic>(){ 
      public ParcleListTopic createFromParcel(Parcel s) 
      { 
       return new ParcleListTopic(s); 
      } 
      public ParcleListTopic[] newArray(int size) 
      { 
       return new ParcleListTopic[size]; 
      } 
    }; 
    public int describeContents() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 
} 


public class ParcleTopic implements Parcelable 
{ 
    HoldListTopic hold; 
    public ParcleTopic(HoldListTopic hold) 
    { 
     this.hold=hold; 
    } 
    public HoldListTopic GetHold() 
    { 
     return hold; 
    } 
    public int describeContents() 
    { 
     return 0; 
    } 
    public void writeToParcel(Parcel dest, int flags) 
    { 
     dest.writeString(hold.Title); 
     dest.writeString(hold.Date); 
     dest.writeInt(hold.NumberComment); 
     dest.writeInt(hold.ID); 
    } 
    public ParcleTopic(Parcel in) 
    { 
     hold.Title=in.readString(); 
     hold.Date=in.readString(); 
     hold.NumberComment=in.readInt(); 
     hold.ID=in.readInt(); 
    } 
    public static final Parcelable.Creator<ParcleTopic> CREATOR = new Parcelable.Creator<ParcleTopic>() 
    { 
      public ParcleTopic createFromParcel(Parcel s) 
      { 
       return new ParcleTopic(s); 
      } 
      public ParcleTopic[] newArray(int size) 
      { 
       return new ParcleTopic[size]; 
      } 
    }; } 
Problemi correlati