数组列表Java中额外的意图

我想通过Intent跳过我的ArrayList 。 但我无法find额外的东西? 任何得到的方法,我得到的错误,如“不适用于string”。

项目详情:

 public class ItemDetails { public String getName() { return name; } public void setName(String name) { this.name = name; } public String getItemDescription() { return itemDescription; } public void setItemDescription(String itemDescription) { this.itemDescription = itemDescription; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } public int getImageNumber() { return imageNumber; } public void setImageNumber(int imageNumber) { this.imageNumber = imageNumber; } public int getVideoNumber() { return videoNumber; } public void setVideoNumber(int videoNumber) { this.videoNumber = videoNumber; } public void setChild(ArrayList<ItemDetails> item_child) { this.item_child = item_child; } public ArrayList<ItemDetails> getChild() { return this.item_child; } public void setParent(ArrayList<ItemDetails> item_parent) { this.item_parent = item_parent; } public ArrayList<ItemDetails> getParent() { return this.item_parent; } private String name ; private String itemDescription; private String price; private int imageNumber; private int videoNumber; private ArrayList<ItemDetails> item_child; private ArrayList<ItemDetails> item_parent; } 

我的课:

 static class ViewHolder { TextView txt_itemName; TextView txt_itemDescription; TextView txt_itemPrice; ImageView itemImage; ArrayList<ItemDetails> item_parent; ArrayList<ItemDetails> item_child; } 

我putExtra:

 intObj.putExtra("exerciselist",obj_itemDetails.getChild()); 

GetChildfunction:

 public ArrayList<ItemDetails> getChild() { return this.item_child; } 

但我无法find我该怎么写来获取arrayList?

 ArrayList<ItemDetails> child1 = getIntent().????????? 

  • 如何让我的Android应用程序出现在另一个特定应用程序的共享列表中
  • Android:消息意图
  • 如何在运行时validation已安装的应用程序以防止钓鱼攻击?
  • 在Android应用程序中打开Facebook页面(如果已安装)
  • android:如何在按钮点击时更改布局?
  • Intent putExtra ArrayList
  • 使用FLAG_ACTIVITY_REORDER_TO_FRONT时,overridePendingTransition不起作用
  • 将网站转换为Android应用程序
  • 但是我找不到我应该怎么写arrayList

    简短的回答:你不能。 你只能传递ArrayList<String>然后检索它

     getIntent().getStringArrayListExtra("key"); 

    但是 。 如果你想通过Intent传递自定义对象,你的对象必须实现:

    • Parcelable interfaceSerializable interface

    你可以select其中之一。 两者工作相同,但具有不同的实现。

    可编程界面:

    如果你selectItemDetails接口,你的ItemDetails类必须实现ItemDetails 。 那你可以把它当成

     intent.putParcelableArrayListExtra("key", value); 

    并检索它为:

     getIntent().getParcelableArrayListExtra("key"); 

    我不会写Parcelable实现,因为它需要更多的代码。 这里是很好的例子 。

    可序列化的接口:

    如果你selectSerializable接口,我build议你创build一个名为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();