PDA

Ver la Versión Completa : Array de objetos AYUDA!!


budu
04/01/12, 21:45:26
Buenas mi pregunta es que estoy haciendo una aplicacion de futbol , mas o menos juego y tengo una duda.

Tengo una clase principal que son los jugadores que es un objeto Jugador, estos Jugadores estan en otro Objeto que es un club.

Vale hasta aqui bien, pero tengo otra Classe llamava ArryClubs que es un array donde contego todo los clubs, madrid,barça,etc... y quiero pasarla de una activity a otra, se pasar un arrya de objeto de una actividad a otra pero no se como pasar una array de objetos que esta contiene a su vez otro array de objetos.


Aqui el codigo del array de clubs, que quiero pasar entre activitys.


package pasar.com;

import java.util.ArrayList;

import android.os.Parcel;
import android.os.Parcelable;

public class ArrayClub extends ArrayList<Club> implements Parcelable {


private Club clubs;

public ArrayClub()
{

}

public void writeToParcel(Parcel club, int flags)
{
int size = this.size();

club.writeInt(size);

for (int i = 0; i < size; i++)
{

Club oc = this.get(i);

club.writeString(oc.getNomClub());
club.writeString(oc.getNomEntrenador());

for(int j=0; j<size; j++)
{


club.writeString(oc.get(j).getNom());


}
}


}
public ArrayClub(Parcel in)
{
readfromParcel(in);
}

private void readfromParcel(Parcel in)
{

this.clear();

int size = in.readInt();

for (int i = 0; i < size; i++)
{

//el orden de los atributos SI importa

Club oClub = new Club();


oClub.setNomClub(in.readString());
oClub.setNomEntrenador(in.readString());

/// Aqui me da error porque me falta poner el
// array de objeto de jugadores y no se como ponerlo

}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator()
{
public ArrayClub createFromParcel(Parcel in)
{
return new ArrayClub(in);
}
public Object[] newArray(int arg0)
{
return null;
}
};
public int describeContents()
{
return 0;
}





}




Codigo de 1 club.


package pasar.com;

import java.util.ArrayList;



public class Club extends ArrayList<Jugador> {

public String nomEntrenador;
public String nomClub;




public Club(String nomEntrenador, String nomClub,ArrayList<Jugador> vJugador
) {
super();


this.nomEntrenador = nomEntrenador;
this.nomClub = nomClub;
ArrayList<Jugador> g = new ArrayList ();

vJugador = g;
}

public Club()
{

}

public String getNomEntrenador() {
return nomEntrenador;
}

public String getNomClub() {
return nomClub;
}


public void setNomEntrenador(String nomEntrenador) {
this.nomEntrenador = nomEntrenador;
}

public void setNomClub(String nomClub) {
this.nomClub = nomClub;
}




}





Y aqui la clase que contiene 1 jugador

package pasar.com;

public class Jugador {


private String nom;
private String nacionalitat;
private String posicio;
private int pase;


public Jugador ()
{

}

public Jugador(String nom) {
super();
this.nom = nom;


}





public void setNom(String nom) {
this.nom = nom;
}



public String getNom() {
return nom;
}








}

Afsoon
05/01/12, 19:04:36
Te recomiendo que para pasar "grandes" flujos de datos te crees una clase que se encargue de eso, en esa clase coges todos los datos desde la clase emisora y luego en la clase receptora los coges, es lo que he hecho para mi aplicación que tengo en desarrollo. Te aconsejo tambien si va a ser una activity que venga de 2+ activitys diferentes y que solo desde una activity obtendrás datos, yo al menos tengo un valor int que no cambia para pasarlo en el intent con Bundle y en la clase receptora comprueba si el intent con el bundle es diferente a null y si el caso que no sea null entonces hago ya el proceso de obtención. Ahora no tengo tiempo pero ahora te pongo un código de ejemplo de muestra :).

RequestData.class (Este es el nombre que tengo)

public class RequestData {
//Inserta aqui las variables que quieras
private String nombre = null
private String club = null;
private static RequestData Instance = null;
private static final int PASS = 1; //Esta variable era para lo que te dije del bundle pero lo recomiendo ponerlo en la clase emisora

private synchronized static void createInstance(){
if(INSTANCE == null)
INSTANCE = new RequestData();
}

public static RequestData getInstance(){
if(INSTANCE == null) createInstance();
return INSTANCE;
}

// Sus respectivos gets and sets de tus variables.
}


clase emisora


RequestData rd = RequestData.getInstance();
//Los set correspondientes y el bundle



clase receptora

Request Data rd = RequestData.getInstance();
Bundle b;
if((b.getIntent().getExtras()) != null)
//Aqui inserta un metodo para hacer la recolecion de datos y etc.


PD:No seria mal un code para Java y sea mas facil leer el codigo sino es una matanza intentar comprenderlo y un code que sea mas ancho para metodos mas grandes porque es imposible seguir el hilo a veces

budu
05/01/12, 20:43:52
Gracias por la ayuda pero me he quedado igual, como pasas el request por el bundle? no lo e acabado de entender.

Afsoon
05/01/12, 22:08:16
Gracias por la ayuda pero me he quedado igual, como pasas el request por el bundle? no lo e acabado de entender.

si quieres por el bundle puedes pasar un dato cualquier, uno inventado lo que sea, su unica función es para que el bundle no valga null, pero yo te digo eso es un apaño que yo hice porque mis datos solo vienen de una activity no es obligatorio que lo hagas con el Request Data ya te hes suficiente a no se que tengas que hacer algún apaño o cualquier otra cosa.