Java 如何将对象从ArrayList传递到新活动,然后再接收该对象?

Java 如何将对象从ArrayList传递到新活动,然后再接收该对象?,java,android,android-activity,arraylist,parcelable,Java,Android,Android Activity,Arraylist,Parcelable,我尝试将对象传递给新活动,但遇到问题。我的ArrayList以这种方式使用另一个类: ArrayList<ListData> myList = new ArrayList<>(); listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, V

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

ArrayList<ListData> myList = new ArrayList<>();
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);

      }

  });
ArrayList myList=new ArrayList();
一切都很好,我正在向mList添加一些对象,我的listview工作正常。 我尝试通过以下方式在单击后传递对象:

ArrayList<ListData> myList = new ArrayList<>();
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);

      }

  });
listview.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共虚线单击(AdapterView AdapterView,视图视图,内部位置,长l){
ListData ListData=myList.get(位置);
ListData dataToSend=新建ListData();
dataToSend.setStrefa(listdata.getStrefa());
dataToSend.setDzielnica(listdata.getDzielnica());
setAdres(listdata.getAdres());
setKryteria(listdata.getKryteria());
dataToSend.setTelefon(listdata.getTelefon());
setData(listdata.getData());
意向意向=新意向(Zlecenia.this,Zlecenie.class);
intent.putExtra(“myData”,dataToSend);
星触觉(意向);
覆盖渐变(R.anim.fade\u in,R.anim.no\u动画);
}
});
这是一个问题,因为“bundle.putParcelableArrayList(“listdata”,listdata);”标记为红色。这迫使我在ListData类中使用extends Parcelable,但当我添加此extends时,我的ArrayList为空。我该怎么办

我的列表数据:

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];
        }
    };
}
public类ListData实现可包裹{
字符串Strefa;
字符串地址;
弦Kryteria;
弦乐电话;
字符串数据;
丝状Dzielnica;
字符串Ilosc;
/*兹勒塞尼亚*/
公共字符串getStrefa(){
返回Strefa;
}
公共无效设置strefa(字符串strefa){
这个。Strefa=Strefa;
}
公共字符串getAdres(){
返回地址;
}
公共无效设置地址(字符串地址){
这个。Adres=Adres;
}
公共字符串getKryteria(){
返回Kryteria;
}
public void setKryteria(字符串kryteria){
这个.Kryteria=Kryteria;
}
公共字符串getTelefon(){
返回电话;
}
公共电话(字符串电话){
this.Telefon=Telefon;
}
公共字符串getData(){
返回数据;
}
公共void setData(字符串数据){
这个。数据=数据;
}
/*斯塔蒂斯基*/
公共字符串getDzielnica(){
返回Dzielnica;
}
公共无效集合dzielnica(字符串dzielnica){
这个.Dzielnica=Dzielnica;
}
公共字符串getIlosc(){
返回Ilosc;
}
公共无效设置ilosc(字符串ilosc){
这个.Ilosc=Ilosc;
}
公共列表数据(){
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地书面记录(Strefa);
目的地登记(Dzielnica);
目的地书面记录(地址);
目的地记录(Kryteria);
目的地记录(电话);
目的写入(数据);
}
专用ListData(包裹输入){
Strefa=in.readString();
Dzielnica=in.readString();
Adres=in.readString();
Kryteria=in.readString();
Telefon=in.readString();
Data=in.readString();
}
公共静态最终包裹。创建者
=新的Parcelable.Creator(){
@凌驾
公共列表数据createFromParcel(地块在中){
返回新的ListData(在中);
}
@凌驾
公共ListData[]新数组(整数大小){
返回新的ListData[大小];
}
};
}
在课堂上试试这个

public class ListData implements Serializable

你能同时显示列表数据吗?我更新了我的问题。这可能有助于更好地解释我创建了一个MyParcelable类。如何传递给listdata的这个类listdata对象?我不明白。虽然这可能会回答这个问题,但是请考虑解释为什么他应该尝试它。我读到PARCELLIT更快,所以我想用这个解决方案。