title: Problem with Parcel // ArrayList
body: <p>I am currently trying to pass an ArrayList of objects from one activity to another. After much searching, I saw that you could pass things as parcels. Here is what I ended up doing:</p>
  
  <pre><code>public class PartsList extends ArrayList&lt;Part&gt; implements Parcelable {
  
  public PartsList(){
  
  }
  
  public PartsList(Parcel in){
  
  }
  
  @SuppressWarnings("unchecked")
  public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
      public PartsList createFromParcel(Parcel in) {
          return new PartsList(in);
      }
  
      public Object[] newArray(int arg0) {
          return null;
      }
  };
  
  private void readFromParcel(Parcel in) {
      this.clear();
  
      // read the list size
      int size = in.readInt();
  
      // order of the in.readString is fundamental
      // it must be ordered as it is in the Part.java file
  
      for (int i = 0; i &lt; size; i++) {
          Part p = new Part();
          p.setDesc(in.readString());
          p.setItemNmbr(in.readString());
          p.setPrice(new BigDecimal(in.readString()));
          this.add(p);
      }
  }
  
  
  @Override
  public int describeContents() {
      // TODO Auto-generated method stub
      return 0;
  }
  
  @Override
  public void writeToParcel(Parcel arg0, int arg1) {
      int size = this.size();
  
      arg0.writeInt(size);
  
      for (int i = 0; i &lt; size; i++) {
          Part p = this.get(i);
          arg0.writeString(p.getDesc());
          arg0.writeString(p.getItemNmbr());
          arg0.writeString(p.getPrice().toString());
      }
  }
      }
  </code></pre>
  
  <p>And here is the part Object:</p>
  
  <pre><code>public class Part implements Parcelable{
  private String desc;
  private String itemNmbr;
  private BigDecimal price;
  
  public Part(){
  
  }
  
  public Part(String i, String d, BigDecimal p){
      this.desc = d;
      this.itemNmbr = i;
      this.price = p;
  }
  </code></pre>
  
  <p>It also has getters/setters of course.</p>
  
  <p>This is where the list is created:</p>
  
  <pre><code>for (String i : tempList){
          Matcher matcher = pattern.matcher(i);
          while (matcher.find()){
  
              // getting matches
              String desc = matcher.group(6);
              String item = matcher.group(9);
              BigDecimal price = new BigDecimal(matcher.group(12).toString());
  
              // adding the new part to the parts list
              parts.add(new Part(item, desc, price));
          }
      }
  </code></pre>
  
  <p>Now, here is where it is received:</p>
  
  <pre><code>    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // get extras (list)
    Bundle b = getIntent().getExtras();
    parts = b.getParcelable("parts");
  //    Part[] PARTS = (Part[]) parts.toArray();
    final Part[] PARTS = new Part[] {
      new Part("desc", "item id", new BigDecimal(0))    
    };
    final String[] COUNTRIES = new String[] {
          "Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra"
        };
    setListAdapter(new ArrayAdapter&lt;Part&gt;(this, R.layout.list_item, PARTS));
  
    ListView lv = getListView();
    lv.setTextFilterEnabled(true);
  
    lv.setOnItemClickListener(new OnItemClickListener() {
      public void onItemClick(AdapterView&lt;?&gt; parent, View view,
          int position, long id) {
        // When clicked, show a toast with the TextView text
        Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
            Toast.LENGTH_SHORT).show();
      }
    });
  }
  </code></pre>
  
  <p>If I don't use the parcel, and just use the array - it works fine. I commented out my test list and it worked fine, otherwise it crashed.</p>
  
  <pre><code>//          parts.add(new Part("desc", "item id", new BigDecimal(0)));
  //          parts.add(new Part("desc2", "item id2", new BigDecimal(1)));
  //          parts.add(new Part("desc3", "item id3", new BigDecimal(2)));
          // create a new bundle
          Bundle b = new Bundle();
  
          // put the list into a parcel
          b.putParcelable("parts", parts);
          Intent i = new Intent(SearchActivity.this, Results.class);
  
          // put the bundle into the intent
          i.putExtras(b);
          startActivity(i);
  </code></pre>
  
  <p>Did I do something wrong with the implementation of the Parcel? I can't figure this out. If anyone could help me ASAP - that would be amazing. </p>