2011-11-19 10 views
7

así que estoy implementando una aplicación de prueba en la que crearé un objeto de Torneo como Parcelable y los pasaré entre intentos. Un torneo incluye: . Un nombre de torneo . Regla . Regla para emparejar jugadores (aleatorio/manual) . Una lista de arreglo de los jugadoresImplementación de Android Parcelable con ArrayList <Object>

Esto es lo que tengo hasta ahora:

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 */ 

}

I a Soy nuevo en Android (quiero decir muy nuevo; 10 horas, supongo). Así que me pregunto: . ¿Es posible crear un objeto Parcelable dadas las especificaciones del objeto Torneo que tiene ArrayList? . ¿Cómo almacenar todos los datos del torneo en un objeto Parcelable y acceder a ellos desde la otra actividad? (a saber, A y B).

+2

pago y envío esta respuesta que tiene ejemplo completo de cómo parse arrayList usando Parcelable. http://stackoverflow.com/questions/7400564/android-parcelable-retailerorderactivity-java-return-null/7400675#7400675 –

+0

@LalitPoptani: Entonces, ¿el objeto jugador debe ser Parcelable también? –

+0

sí es mejor hacer eso. –

Respuesta

0

muchas de estas cosas resultan ser de RPC - Me gustaría escribir la mayor parte de los trabajos en el tradicional de Java y luego tratar de hacer que el sip ......

, por supuesto:

Contenedor para un mensaje (datos y referencias a objetos) que se pueden enviar a través de un IBinder. Un paquete puede contener datos aplanados que se desplegarán al otro lado del IPC (usando los diversos métodos aquí para escribir tipos específicos, o la interfaz general Parcelable) y referencias a objetos vivos de IBinder que darán como resultado que el otro lado reciba un proxy IBinder conectado con el IBinder original en el paquete.

en otras palabras, la parcela es una forma de comunicación entre procesos ....

usted tiene que volver a pensar en el modelo base ya que esto no es un 10.000 solicitudes de un segundo servidor - lo que es es una mano -celebrada dispositivo de consumo que solo puede tirar de los punteros de la tabla de procesos si se tiene que debido al lugar en que opera

he aprendido a ir a la pestaña blog en http://android-developers.blogspot.com/?hl=en

tener mucho cuidado de no perforar la entrada en lo profundo de las cosas que debe estar en los hilos de trabajo y sin te La rica primitivas de sincronización que Java hace fácil de usar

multihilo Para Rendimiento

Publicado por Tim Bray, el 19 de julio de 2010 a 11:41 [Este post es por Gilles Debunne, un ingeniero en el grupo de Android que adora hacer múltiples tareas.- Tim Bray]

está en los blogs --- mucho mejor lugar para empezar

2

aquí es el código que muestran cómo 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]; 
      } 
    }; } 
Cuestiones relacionadas