在活动之间传递arrayList <object>会丢失一些对象</object>

时间:2013-03-19 17:00:13

标签: android arraylist parcelable

我试图将一个arrayList从活动A传递给另一个活动B.我正在使用的对象类实现了Parcelable。在A活动中,arrayList似乎很好地形成了,但是当我试图将它恢复到B活动时它是不完整的。

我的意思是: 活动A中的arrayList有5个对象:[modelo.Restaurante@419a1810,modelo.Restaurante @ 419a1d38,modelo.Restaurante @ 419a1ec0,modelo.Restaurante @ 419a2010,modelo.Restaurante@419a21b8]

我在活动B中得到的arrayList只有3个对象,以及两个空值或空值:[modelo.Restaurante@419b1398 ,, modelo.Restaurante @ 419b1658,null,modelo.Restaurante@419b18c8]

如果我尝试使用不同数量的元素,它总会在奇数位置出错。

有人能帮帮我吗?

这里是代码:

活动A其中a将arrayList放在intent中:

  Intent intent = new Intent(BuscadorPrincipalActivity.this, ListaRestaurantes.class);
        intent.putParcelableArrayListExtra("jatetxeak", restaurantes);  

            startActivity(intent);

活动B,我想再次获得它:

Bundle extras = getIntent().getExtras();
          if(extras !=null)
          {
             array_restaurantes=   extras.getParcelableArrayList("jatetxeak");

          } 

实现parcelable的对象类:

public class Restaurante implements Parcelable{

private int idRestaurante;
private int idPueblo;
private String nombre;
private String direccion;
private String telefono;
private String mail;
private String web;
private String tipoDeCocina;
private String horario;
private double latitud;
private double longitud;
private String foto;
private String especialidades;

public Restaurante(int idRestaurante,int idPueblo, String nombre, String direccion,
        String telefono, String mail, String web, String tipoDeCocina,
        String horario, double latitud, double longitud, String foto,
        String especialidades) {
    super();
    this.idRestaurante = idRestaurante;
    this.idPueblo=idPueblo;
    this.nombre = nombre;
    this.direccion = direccion;
    this.telefono = telefono;
    this.mail = mail;
    this.web = web;
    this.tipoDeCocina = tipoDeCocina;
    this.horario = horario;
    this.latitud = latitud;
    this.longitud = longitud;
    this.foto = foto;
    this.especialidades = especialidades;
}

public Restaurante() {
    super();
    // TODO Auto-generated constructor stub
}

public int getIdRestaurante() {
    return idRestaurante;
}

public void setIdRestaurante(int idRestaurante) {
    this.idRestaurante = idRestaurante;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public String getDireccion() {
    return direccion;
}

public void setDireccion(String direccion) {
    this.direccion = direccion;
}

public String getTelefono() {
    return telefono;
}

public void setTelefono(String telefono) {
    this.telefono = telefono;
}

public String getMail() {
    return mail;
}

public void setMail(String mail) {
    this.mail = mail;
}

public String getWeb() {
    return web;
}

public void setWeb(String web) {
    this.web = web;
}

public String getTipoDeCocina() {
    return tipoDeCocina;
}

public void setTipoDeCocina(String tipoDeCocina) {
    this.tipoDeCocina = tipoDeCocina;
}

public String getHorario() {
    return horario;
}

public void setHorario(String horario) {
    this.horario = horario;
}

public double getLatitud() {
    return latitud;
}

public void setLatitud(double latitud) {
    this.latitud = latitud;
}

public double getLongitud() {
    return longitud;
}

public void setLongitud(double longitud) {
    this.longitud = longitud;
}

public String getFoto() {
    return foto;
}

public void setFoto(String foto) {
    this.foto = foto;
}

public String getEspecialidades() {
    return especialidades;
}

public void setEspecialidades(String especialidades) {
    this.especialidades = especialidades;
}

public int getIdPueblo() {
    return idPueblo;
}

public void setIdPueblo(int idPueblo) {
    this.idPueblo = idPueblo;
}

public ContentValues createContentValuesRestaurante(Restaurante restaurante) {
    ContentValues values = new ContentValues();
    values.put("idRestaurante", restaurante.idRestaurante);
    values.put("nombre", restaurante.nombre);
    values.put("direccion", restaurante.direccion);
    values.put("telefono", restaurante.telefono);
    values.put("mail", restaurante.mail);
    values.put("web", restaurante.web);
    values.put("tipoCocina", restaurante.tipoDeCocina);
    values.put("horario", restaurante.horario);
    values.put("latitud", restaurante.latitud);
    values.put("longitud", restaurante.longitud);
    values.put("foto", restaurante.foto);
    values.put("especialidades", restaurante.especialidades);
    return values;
}

public static final Parcelable.Creator<Restaurante> CREATOR = new Parcelable.Creator<Restaurante>(){

    public Restaurante createFromParcel(Parcel source) {
        Log.d ("parcelabler pruebak", "createFromParcel()");
        return new Restaurante(source);
    }

    public Restaurante[] newArray(int size) {
        Log.d ("parcelabler pruebak", "createFromParcel() newArray ");
        return new Restaurante[size];
    }

};


/**
 * This constructor "deserializes" the object.
 * @param in
 */
 private Restaurante (Parcel source) {

   Log.d ("parcelabler pruebak", "parcel source");
    idRestaurante=source.readInt();
    idPueblo=source.readInt();
    nombre=source.readString();
    direccion=source.readString();
    telefono=source.readString();
    mail=source.readString();
    web=source.readString();
    tipoDeCocina=source.readString();
    horario=source.readString();
    latitud=source.readInt();
    latitud=source.readInt();   
    foto=source.readString();
    especialidades=source.readString();


    /// To "deserialize" the HashMap
      /*int hashSize = source.readInt();
      contentSrc = new HashMap<String, String>();
      for (int i = 0; i < hashSize; i++)
          contentSrc.put(source.readString(), source.readString());*/
}


public int describeContents() {

    return 0;
}

public void writeToParcel(Parcel dest, int flags) {

      Log.d ("parcelabler pruebak", "writeToParcel");

  dest.writeInt(idRestaurante);
  dest.writeInt(idPueblo);
  dest.writeString(nombre);
  dest.writeString(direccion);
  dest.writeString(telefono);
  dest.writeString(mail);
  dest.writeString(web);
  dest.writeString(tipoDeCocina);
  dest.writeString(horario);
  dest.writeDouble(latitud);
  dest.writeDouble(longitud);   
  dest.writeString(foto);
  dest.writeString(especialidades);


/// To "serialize" the HashMap
 /* dest.writeInt(contentSrc.size());
  Iterator<Entry<String, String>> i = contentSrc.entrySet().iterator();
  while (i.hasNext()){
      Map.Entry<String, String> e = (Map.Entry<String, String>) i.next();
      dest.writeString(e.getKey());
      dest.writeString(e.getValue());}*/

}

}

我真的很感激任何帮助......非常感谢你......

0 个答案:

没有答案