是否可以通过意图传递带有对象的arraylists的arraylist?
如果是这样,你怎么能这样做?它仍然是Parcelable。
所以我将对象的arraylist放入我的主数组中,我需要在下一个活动或意图中使用这些数据。
谢谢!
答案 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");