如何在android中使用intent传递数组列表

时间:2016-05-21 05:19:39

标签: java android list android-intent

  

如何使用intent将数组列表从一个活动传递到另一个活动。

来自活动

 ArrayList<ServicesInfo> bookedService = new ArrayList<ServicesInfo>();`
  Intent intent = new Intent(getActivity() , Proceedtocart.class);
                intent.putExtra("Listview",bookedService);
                startActivity(intent);

致力于

 bookedService = (ArrayList<BookedInfo>) getIntent().getSerializableExtra("Listview");
  

运行时遇到错误&#34; java.lang.runtimeexception parcel无法编组值android&#34;

     

帮助修复此问题

2 个答案:

答案 0 :(得分:1)

试试这个:

Intent intent = new Intent(this, NextActivity.class);
intent.putStringArrayListExtra("Listview", bookedService);
startActivity(intent);

和NextActivity:

yourArrayList = getIntent().getStringArrayListExtra("Listview");

答案 1 :(得分:1)

您可以使用

public class ContactInfo {

  private String name;
  private String surname;
  private int idx;

// get and set methods
}



 public class ContactInfo implements Parcelable {

      private String name;
      private String surname;
      private int idx;

    // get and set method

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

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
        dest.writeString(surname);
        dest.writeInt(idx);
    }

    // Creator
    public static final Parcelable.Creator CREATOR
        = new Parcelable.Creator() {
        public ContactInfo createFromParcel(Parcel in) {
        return new ContactInfo(in);
    }

    public ContactInfo[] newArray(int size) {
        return new ContactInfo[size];
        }
    };

    // "De-parcel object
    public ContactInfo(Parcel in) {
        name = in.readString();
        surname = in.readString();
        idx = in.readInt();
    }
} 

Intent i = new Intent(MainActivity.this, ActivityB.class);
// Contact Info
ContactInfo ci = createContact("Francesco", "Surviving with android", 1);
i.putExtra("contact", ci);

获取

Intent i = getIntent();

ContactInfo ci = i.getExtras().getParcelable("contact");

tv.setText(ci.toString()); // tv is a TextView instance