簡體   English   中英

自定義對象意圖可拆分元素arraylist

[英]Custom Object intent Parcelable element arraylist

這段代碼有效,但是我不傳遞arrayList包含的數據。

public class Percorso implements Parcelable {

  int id;
  String nome;
  double distanza;
  int numero_commenti;
  double valutazione;
  ArrayList<Commento>  commenti;
  ArrayList<Cordinate>  cordinate;

  public Percorso(){

  }

  protected Percorso(Parcel in) {
  id = in.readInt();
  nome = in.readString();
  distanza = in.readDouble();
  numero_commenti = in.readInt();
  valutazione = in.readDouble();
  }

  public static final Creator<Percorso> CREATOR = new Creator<Percorso>() {
      @Override
       public Percorso createFromParcel(Parcel in) {
           return new Percorso(in);
        }

        @Override
          public Percorso[] newArray(int size) {
             return new Percorso[size];
           }
        };

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }
        public String getNome() {
            return nome;
        }

        public void setNome(String nome) {
            this.nome = nome;
        }

        public double getDistanza() {
            return distanza;
        }

        public void setDistanza(double distanza) {
            this.distanza = distanza;
        }

        public int getNumero_commenti() {
            return numero_commenti;
        }

        public void setNumero_commenti(int numero_commenti) {
            this.numero_commenti = numero_commenti;
        }

        public double getValutazione() {
            return valutazione;
        }

        public void setValutazione(double valutazione) {
            this.valutazione = valutazione;
        }
        public ArrayList<Commento> getCommenti() {
            return commenti;
        }

        public void setCommenti(ArrayList<Commento> commenti) {
            this.commenti = commenti;
        }
        public ArrayList<Cordinate> getCordinate() {
            return cordinate;
        }

        public void setCordinate(ArrayList<Cordinate> cordinate) {
            this.cordinate = cordinate;
        }

        @Override
        public int describeContents() {
            return 0;
        }

        @Override
        public void writeToParcel(Parcel parcel, int i) {
            parcel.writeInt(id);
            parcel.writeString(nome);
            parcel.writeDouble(distanza);
            parcel.writeInt(numero_commenti);
            parcel.writeDouble(valutazione);
        }
    }

//

public class Cordinate  implements Parcelable {
    double latitudine;
    double longitudin;
    public Cordinate(){}

    protected Cordinate(Parcel in) {
        latitudine = in.readDouble();
        longitudin = in.readDouble();
    }

    public static final Creator<Cordinate> CREATOR = new Creator<Cordinate>() {
        @Override
        public Cordinate createFromParcel(Parcel in) {
            return new Cordinate(in);
        }

        @Override
        public Cordinate[] newArray(int size) {
            return new Cordinate[size];
        }
    };

    public double getLatitudine() {
        return latitudine;
    }

    public void setLatitudine(double latitudine) {
        this.latitudine = latitudine;
    }

    public double getLongitudin() {
        return longitudin;
    }

    public void setLongitudin(double longitudin) {
        this.longitudin = longitudin;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeDouble(latitudine);
        parcel.writeDouble(longitudin);
    }
}

意圖

 Percorso percorsoClick = listaPercorsi.get(i);

                            Intent intent = new Intent(getBaseContext(), PercorsoActivity.class);
                            intent.putExtra("percorso", percorsoClick);
                            startActivity(intent);

獲得意願

percorso = getIntent().getParcelableExtra("percorso");
    System.out.println(percorso.getNome());

因為不是arrayList所以getNome()起作用。

相反, getCordinate不起作用。

percorso.getCordinate().size() // null

我希望這很清楚。 我已經在所有類上設置了Parcelable實現。

非常感謝你的幫助

ArrayList<Cordinate> cordinate ; 沒有被取消。 您仍然需要注意Parcel parcel的寫/讀操作。 例如

    protected Percorso(Parcel in) {
        id = in.readInt();
        nome = in.readString();
        distanza = in.readDouble();
        numero_commenti = in.readInt();
        valutazione = in.readDouble();
        cordinate = new ArrayList<Cordinate>();
        in.readList(cordinate,Cordinate.class.getClassLoader());
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeInt(id);
        parcel.writeString(nome);
        parcel.writeDouble(distanza);
        parcel.writeInt(numero_commenti);
        parcel.writeDouble(valutazione);
        parcel.writeList(cordinate);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM