Home » Android » android – Array List Intent extra in Java

android – Array List Intent extra in Java

Posted by: admin May 14, 2020 Leave a comment


I am trying to skip my ArrayList through Intent. But I cannot find what to write in extra? Any get methods I am getting errors like “not applicable for string.”

Item Details:

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; 

My class:

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

My putExtra:


GetChild function :

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

But I cannot find how am I supposed to write to get arrayList?

ArrayList<ItemDetails> child1 = getIntent().?????????
How to&Answers:

But i cannot find how am ı supposed to write to get arrayList

Short answer: you can’t. You can only pass ArrayList<String> and then retrieve it with


But. If you want to pass custom objects via Intent your objects have to implement:

You can choose one of them. Both works same but have different implementations.

Parcelable interface:

If you choose Parcelable interface, your ItemDetails class have to implement Parcelable. Then you can put it as

intent.putParcelableArrayListExtra("key", value);

and retrieve it as:


I won’t write you Parcelable implementation because it requires a little more code. Here is nice example.

Serializable interface:

If you choose Serializable interface i suggest you to create class named for instance ItemDetailsWrapper that will wrap your ArrayList(s)<ItemDetails>

Both i.e. ItemDetailsWrapper and ItemDetails class have to implement Serializable interface. Now you are able to pass it via Intent like this:

getIntent().putExtra("key", <serializableClass>); // storing 
getIntent().getSerializableExtra("key"); // retrieving

Example of implementation:

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

And how to pass through Activities:

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();