如何在android意图中传递arraylist对象的arraylist?

时间:2016-02-25 20:35:26

标签: java android android-intent android-activity arraylist

是否可以通过意图传递带有对象的arraylists的arraylist?

如果是这样,你怎么能这样做?它仍然是Parcelable。

所以我将对象的arraylist放入我的主数组中,我需要在下一个活动或意图中使用这些数据。

谢谢!

2 个答案:

答案 0 :(得分:1)

当然这完全可以:

创建一个实现Parcelable的类:

public class SampleObject implements Parcelable {

    public String name;

    public SampleObject(){}

    public SampleObject(Parcel source){
        this.name  = source.readString();
    }

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

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

    public static final Parcelable.Creator<SampleObject> CREATOR = new Parcelable.Creator<SampleObject>(){
        @Override
        public SampleObject createFromParcel(Parcel source) {
            return new SampleObject(source);
        }

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

然后将Intent传递创建为parcelable:

Intent myIntent = new Intent(MainActivity.this, NewIntent.class);
// pass the list here, im using a new List as a sample
myIntent.putParcelableArrayListExtra("NAME", new ArrayList<SampleObject>());
startActivity(myIntent);

答案 1 :(得分:0)

如果ArrayList<E>类型为E,您可以采用相同的方式传递Serializable/Parcelable

您可以调用putExtra (String name, Serializable value) Intent来存储,getSerializableExtra (String name)进行检索。

示例:

ArrayList<ArrayList<String>> myList = new ArrayList<ArrayList<String>>();
intent.putExtra("mylist", myList);

在另一项活动中:

ArrayList<ArrayList<String>> myList = (ArrayList<ArrayList<String>>) getIntent().getSerializableExtra("mylist");

ArrayList<ArrayList<String>> myList = new ArrayList<ArrayList<String>>();
    intent.putParcelableArrayListExtra("mylist", myList);
     ArrayList<ArrayList<String>> myList = (ArrayList<ArrayList<String>>) getIntent().getParcelableArrayListExtra("mylist");