如何将对象从ArrayList传递给新的Activity然后接收?

时间:2016-02-01 16:10:49

标签: java android android-activity arraylist parcelable

我尝试将对象传递给新活动,但我遇到了问题。我的ArrayList以这种方式使用另一个类:

ArrayList<ListData> myList = new ArrayList<>();

一切都很棒,我正在向mList添加一些对象,我的listview工作正常。 我尝试以这种方式点击后传递一个对象:

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

  @Override
  public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

            ListData listdata = myList.get(position);

            ListData dataToSend = new ListData();
            dataToSend.setStrefa(listdata.getStrefa());
            dataToSend.setDzielnica(listdata.getDzielnica());
            dataToSend.setAdres(listdata.getAdres());
            dataToSend.setKryteria(listdata.getKryteria());
            dataToSend.setTelefon(listdata.getTelefon());
            dataToSend.setData(listdata.getData());

            Intent intent = new Intent(Zlecenia.this, Zlecenie.class);
            intent.putExtra("myData", dataToSend);
            startActivity(intent);
            overridePendingTransition(R.anim.fade_in, R.anim.no_animation);

      }

  });

这是一个问题因为“bundle.putParcelableArrayList(”listdata“,listdata);”标记为红色。这迫使我在ListData类中使用扩展Parcelable,但是当我添加此扩展时,我的ArrayList为空。我该怎么做?

我的ListData:

public class ListData implements Parcelable{

    String Strefa;
    String Adres;
    String Kryteria;
    String Telefon;
    String Data;
    String Dzielnica;
    String Ilosc;

    /* Zlecenia */

    public String getStrefa() {
        return Strefa;
    }

    public void setStrefa(String strefa) {
        this.Strefa = strefa;
    }

    public String getAdres() {
        return Adres;
    }

    public void setAdres(String adres) {
        this.Adres = adres;
    }

    public String getKryteria() {
        return Kryteria;
    }

    public void setKryteria(String kryteria) {
        this.Kryteria = kryteria;
    }

    public String getTelefon() {
        return Telefon;
    }

    public void setTelefon(String telefon) {
        this.Telefon = telefon;
    }

    public String getData() {
        return Data;
    }

    public void setData(String data) {
        this.Data = data;
    }

    /* Statystyki */

    public String getDzielnica() {
        return Dzielnica;
    }

    public void setDzielnica(String dzielnica) {
        this.Dzielnica = dzielnica;
    }

    public String getIlosc() {
        return Ilosc;
    }

    public void setIlosc(String ilosc) {
        this.Ilosc = ilosc;
    }


    public ListData() {

    }

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {

        dest.writeString(Strefa);
        dest.writeString(Dzielnica);
        dest.writeString(Adres);
        dest.writeString(Kryteria);
        dest.writeString(Telefon);
        dest.writeString(Data);

    }

    private ListData(Parcel in) {

        Strefa = in.readString();
        Dzielnica = in.readString();
        Adres = in.readString();
        Kryteria = in.readString();
        Telefon = in.readString();
        Data = in.readString();

    }

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

        @Override
        public ListData createFromParcel(Parcel in) {
            return new ListData(in);
        }

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

1 个答案:

答案 0 :(得分:2)

在课堂上试试这个

public class ListData implements Serializable