是否可以使用putExtra中的对象列表

时间:2014-04-25 19:42:43

标签: android android-activity

我知道putExtra可用于在活动之间传递对象/字符串。但我试图在ArrayList

中添加ArrayList<Foo> putExtra个对象,例如{{1}}

这可能吗?

3 个答案:

答案 0 :(得分:1)

你可以使用      intent.putParcelableArrayListExtra()意图传递Arraylist。

请参阅http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra(java.lang.String, java.util.ArrayList)

编辑: 还有一个链接:Help with passing ArrayList and parcelable Activity

答案 1 :(得分:1)

不,不是。您需要将serialize对象转换为某种字符串表示形式。一个可能的字符串表示是JSON,如果你问我,在android中序列化到/来自JSON的最简单的方法之一是通过Google GSON

此外,如果您只是传递物体,那么Parcelable就是为此设计的。它需要比使用Java的本机序列化更多的努力,但它的速度更快(我的意思是,方式更快)。

来自文档:

 public class MyParcelable implements Parcelable {
 private int mData;

 public int describeContents() {
     return 0;
 }

 public void writeToParcel(Parcel out, int flags) {
     out.writeInt(mData);
 }

 public static final Parcelable.Creator<MyParcelable> CREATOR
         = new Parcelable.Creator<MyParcelable>() {
     public MyParcelable createFromParcel(Parcel in) {
         return new MyParcelable(in);
     }

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

 private MyParcelable(Parcel in) {
     mData = in.readInt();
 }
}

答案 2 :(得分:0)

仅适用于非常有限且特殊类型的“Foo”。如果我正确地回忆起Double和Long(或者可能是整数?)是那些类型。可能有办法通过将其封装在某些Serializable对象中来走私更通用的ArrayList,但我不确定。