title: intent.putExtra a list of Parcelable objects and enums
body: <p>This question is different from all the other questions because here the list of parcelable objects is created outside on the fly just sending it before via Intent. </p>
  
  <p>Problem: Product is parcelable but the custom <code>List&lt;Product&gt;</code> is not. How to make the <code>List</code> <code>Parcelable</code>??</p>
  
  <p><strong>Product</strong></p>
  
  <pre><code>public class Product implements Parcelable {
  
      public String id;
      public String name;
  
      public Product(String id, String name) {
          this.id = id;
          this.name = name;
      }
  
      @Override
      public int describeContents() {
          return 0;
      }
  
      protected Product(Parcel in) {
          id = in.readString();
          name = in.readString();
      }
  
      public static final Creator&lt;Product&gt; CREATOR = new Creator&lt;Product&gt;() {
          @Override
          public Product createFromParcel(Parcel in) {
              return new Product(in);
          }
  
          @Override
          public Product[] newArray(int size) {
              return new Product[size];
          }
      };
  
      @Override
      public void writeToParcel(Parcel parcel, int i) {
          parcel.writeString(id);
          parcel.writeString(name);
      }
  }
  </code></pre>
  
  <p><strong>Activity class</strong></p>
  
  <pre><code>Intent intent = new Intent(this, ShowProducts.class);
  List&lt;Product&gt; products = getSpecificProducts();
  
  intent.putExtra("PRODUCTS", products); // error
  
  startActivity(intent);
  </code></pre>
  
  <hr>
  
  <p><strong>Edit</strong></p>
  
  <p>The question is two fold, it's not a duplicate, the other part is <code>List&lt;Enum&gt;</code> </p>
  
  <pre><code>public enum Department implements Parcelable {
  
      SALES("Sales", 0),
      HR("HR", 1),
  
      public String name;
      public int ordinal;
  
      Department(String name, int ordinal) {
          this.name = name;
          this.ordinal = ordinal;
      }
  
      public static final Creator&lt;Department&gt; CREATOR = new Creator&lt;Department&gt;() {
          @Override
          public Department createFromParcel(Parcel in) {
              return Department.values()[in.readInt()];
          }
  
          @Override
          public Department[] newArray(int size) {
              return new Department[size];
          }
      };
  
      @Override
      public int describeContents() {
          return 0;
      }
  
      @Override
      public void writeToParcel(Parcel parcel, int i) {
          parcel.writeInt(ordinal);
      }
  
  }
  </code></pre>
  
  <p>Based on the suggested answers, I've tried.</p>
  
  <pre><code>List&lt;Department&gt; departments = getSpecificDepartments();
  
  intent.putParcelableArrayListExtra("Departments", departments);
  </code></pre>
  
  <blockquote>
    <p>error: incompatible types: <code>List&lt;Department&gt;</code> cannot be converted to
    <code>ArrayList&lt;? extends Parcelable&gt;</code></p>
  </blockquote>