但是我找不到应该怎么写来获取arrayList
简短答案:您不能。您只能通过
ArrayList<String>,然后使用
getIntent().getStringArrayListExtra("key");但是 。如果要通过Intent传递自定义对象,则必须实现以下对象:
Parcelable interface
要么Serializable interface
您可以选择其中之一。两者的工作原理相同,但实现方式不同。
可打包接口:
如果选择Parcelable接口,则您的
ItemDetails类必须实现Parcelable。然后你可以把它作为
intent.putParcelableArrayListExtra("key", value);并将其检索为:
getIntent().getParcelableArrayListExtra("key");我不会为您编写Parcelable实现,因为它需要更多代码。这是一个很好的例子。
可序列化的接口:
如果您选择Serializable接口,建议您创建一个名为ItemDetailsWrapper的类,该类将包装您的
ArrayList(s)<ItemDetails>
ItemDetailsWrapper和ItemDetails类都必须实现Serializable接口。现在,您可以像这样通过Intent传递它:
getIntent().putExtra("key", <serializableClass>); // storing getIntent().getSerializableExtra("key"); // retrieving实现示例:
public class ItemDetailsWrapper implements Serializable { private static final long serialVersionUID = 1L; private ArrayList<ItemDetails> itemDetails; public ItemDetailsWrapper(ArrayList<ItemDetails> items) { this.itemDetails = items; } public ArrayList<ItemDetails> getItemDetails() { return itemDetails; }}public class ItemDetails implements Serializable { private static final long serialVersionUID = 1L; // getters, setters and properties}以及如何通过活动:
ItemDetailsWrapper wrapper = new ItemDetailsWrapper(list);Intent i = new Intent(<context>, <targetActivity>);i.putExtra("obj", wrapper); // i.putExtra("obj", new ItemDetailsWrapper(list));// retrieving ItemDetailsWrapper wrap = (ItemDetailsWrapper) getIntent().getSerializableExtra("obj");ArrayList<ItemDetails> list = wrap.getItemDetails();


