title: Android IndexOutOfBoundsException error for Search Filtering List View
body: <p>I have implemented Search Filter to my SearchView in my SherlockAction Bar. 
  I have Implemented a Custom Filter. When i type any letter i am getting an error</p>
  
  <pre><code>public class PlacesListAdapter extends ArrayAdapter&lt;Place&gt; implements
          Filterable {
  
      public Context mContext;
  
      List&lt;Place&gt; mPlaces, orig;
  
      public PlacesListAdapter(Context context, List&lt;Place&gt; places) {
          super(context, R.layout.list_item_places, places);
          // TODO Auto-generated constructor stub
          this.mPlaces = places;
          this.mContext = context;
  
          orig = new ArrayList&lt;Place&gt;(places);
  
      }
  
      @Override
      public Place getItem(int position) {
          // TODO Auto-generated method stub
          return mPlaces.get(position);
      }
  
      @Override
      public long getItemId(int position) {
          return position;
      }
  
      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
  
          ViewHolder holder;
  
          if (convertView == null) {
              LayoutInflater viewInflater;
              viewInflater = LayoutInflater.from(getContext());
              convertView = viewInflater.inflate(R.layout.list_item_places, null);
  
              holder = new ViewHolder();
              holder.placeTitle = (TextView) convertView
                      .findViewById(R.id.place_title);
              holder.placeDistance = (TextView) convertView
                      .findViewById(R.id.place_distance);
              holder.placeCategoryIcon = (ImageView) convertView
                      .findViewById(R.id.place_category_icon);
  
              convertView.setTag(holder);
  
          } else {
              holder = (ViewHolder) convertView.getTag();
          }
  
          holder.placeTitle.setText(mPlaces.get(position).getPlaceName());
          holder.placeDistance.setText(mPlaces.get(position).getPlaceDistance());
          holder.placeCategoryIcon
                  .setImageResource(R.drawable.icon_category_hillstation);
  
          // // Setting Alternative Row Colors
          if (position % 2 == 0) {
              convertView
                      .setBackgroundResource(R.drawable.list_view_places_row_1);
          } else {
              convertView
                      .setBackgroundResource(R.drawable.list_view_places_row_2);
          }
  
          return convertView;
      }
  
      static class ViewHolder {
          TextView placeId;
  
          TextView placeTitle;
  
          TextView placeDistance;
  
          ImageView placeCategoryIcon;
      }
  
      @Override
      public Filter getFilter() {
          // TODO Auto-generated method stub
          return new PlaceFilter();
      }
  
      private class PlaceFilter extends Filter {
  
          @Override
          protected FilterResults performFiltering(CharSequence constraint){
              FilterResults oReturn = new FilterResults();
              ArrayList&lt;Place&gt; results = new ArrayList&lt;Place&gt;();
              if (orig == null)
                  orig = mPlaces;
              if (constraint != null) {
                  if (orig != null &amp;&amp; orig.size() &gt; 0) {
                      for (Place g : orig) {
                          if (g.getPlaceName()
                                  .toLowerCase()
                                  .startsWith(constraint.toString().toLowerCase()))
                              results.add(g);
                      }
                  }
                  oReturn.values = results;
              }
              return oReturn;
          }
  
          @Override
          protected void publishResults(CharSequence constraint,
                  FilterResults results) {
              mPlaces = (ArrayList&lt;Place&gt;) results.values;
              notifyDataSetChanged();
          }
  
      }
  
  }
  </code></pre>
  
  <p><strong>ERROR</strong></p>
  
  <pre><code>12-26 17:24:43.900: E/AndroidRuntime(18693): FATAL EXCEPTION: main
  12-26 17:24:43.900: E/AndroidRuntime(18693): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at java.util.ArrayList.get(ArrayList.java:304)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at com.m7.nomad.PlacesListAdapter.getView(PlacesListAdapter.java:68)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.AbsListView.obtainView(AbsListView.java:2193)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.ListView.makeAndAddView(ListView.java:1774)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.ListView.fillDown(ListView.java:672)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.ListView.fillSpecific(ListView.java:1330)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.ListView.layoutChildren(ListView.java:1603)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.AbsListView.onLayout(AbsListView.java:2044)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.View.layout(View.java:11418)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:925)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.View.layout(View.java:11418)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.View.layout(View.java:11418)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.View.layout(View.java:11418)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.View.layout(View.java:11418)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1628)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2585)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.os.Handler.dispatchMessage(Handler.java:99)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.os.Looper.loop(Looper.java:137)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at android.app.ActivityThread.main(ActivityThread.java:4507)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at java.lang.reflect.Method.invokeNative(Native Method)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at java.lang.reflect.Method.invoke(Method.java:511)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
  12-26 17:24:43.900: E/AndroidRuntime(18693):    at dalvik.system.NativeStart.main(Native Method)
  </code></pre>
  
  <p><strong>Error</strong></p>
  
  <p>Its pointing to</p>
  
  <pre><code>holder.placeTitle.setText(mPlaces.get(position).getPlaceName());
  </code></pre>