title: how to solve java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0?
body: <p>I have two autocompletetextviews,in first autocompletetextview i am getting items from server using json,the following is response for that</p>
  
  <pre><code>{"status":"success","clientlist":[{"cid":"1","name":"margi"},{"cid":"2","name":"steven"}],"productboxtype":[{"pbxid":"1","pbxname":"1 Dozen","qtyperbox":"12"},{"pbxid":"2","pbxname":"2 Dozens","qtyperbox":"24"},{"pbxid":"3","pbxname":"3 Dozens","qtyperbox":"36"}]}
  </code></pre>
  
  <p>i am able to get names in my first autocomplete and it works fine,</p>
  
  <p>Now issue is suppose user select item "margi" and its cid is 1,so again i am sending request to server and trying to get productnames of 'margi',and its response is </p>
  
  <pre><code>{"status":"success","clientproduct":[{"pid":"4","name":"kangan pair","unitprice":"1500","boxqty":"1","bulkprice":[{"minqty":"10","price":"1500"},{"minqty":"15","price":"1470"},{"minqty":"20","price":"1460"}]}]}
  </code></pre>
  
  <p>MAniActivity</p>
  
  <pre><code>   public class MainActivity extends Activity {
  
      private AutoCompleteTextView acTextView;
  
      private String catidtemp;
      private String catid;
  
      JSONParser jsonParser = new JSONParser();
      private AutoCompleteTextView autoproduct;
      private static final String FEEDBACK_URL = "";
      private static final String FEEDBACK_SUCCESS = "status";
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
  
          StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
          StrictMode.setThreadPolicy(policy);
  
          acTextView = (AutoCompleteTextView) findViewById(R.id.autocmplte_clorder_clname);
          acTextView.setAdapter(new SuggestionAdapterClientList(this,acTextView.getText().toString()));
  
          autoproduct=(AutoCompleteTextView)findViewById(R.id.autocmplte_clorder_product);
          autoproduct.setAdapter(new SuggestionAdapterClientProduct(this, autoproduct.getText().toString()));
  
          acTextView.setOnItemClickListener(new OnItemClickListener() {
  
  
              @Override
              public void onItemClick(AdapterView&lt;?&gt; parent, View view,
                      int position, long id) {
                  // TODO Auto-generated method stub
  
  
                  JsonParseClientProduct jp=new JsonParseClientProduct();
                  List&lt;SuggestGetSetClientProduct&gt; list1 = new ArrayList&lt;SuggestGetSetClientProduct&gt;();
                  list1 =jp.getParseJsonWCF(autoproduct.getText().toString());
                  if(position &lt; list1.size())
                  new AttemptLogin(Integer.parseInt(list1.get(position).getId())).execute();
              }
          });
  
      }
  
        class AttemptLogin extends AsyncTask&lt;String, String, String&gt; {
  
          boolean failure = false;
          private ProgressDialog pDialog;
  
          private int selected_cid=1;
          AttemptLogin(int selected_cid){
          this.selected_cid=selected_cid;
          }
  
  
          @Override
          protected void onPreExecute() {
              super.onPreExecute();
              pDialog = new ProgressDialog(MainActivity.this);
              pDialog.setMessage("Sending..");
              pDialog.setIndeterminate(true);
            //  pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress));
              pDialog.setCancelable(true);
              pDialog.show();
          }
  
          @SuppressWarnings("unused")
          @Override
          protected String doInBackground(String...args) {
              //Check for success tag
              //int success;
              Looper.prepare();
  
  
  
               try {
  
                   JsonParseClientList jp=new JsonParseClientList();
                      List&lt;NameValuePair&gt; params = new ArrayList&lt;NameValuePair&gt;();
                   List&lt;SuggestGetSetClientList&gt; list =jp.getParseJsonWCF(acTextView.getText().toString());
  
                       for(int i = 0;i&lt;list.size();i++)
                       {
                         if(list.get(i).getName().equals(acTextView.getText().toString()))
                         // params.add(new BasicNameValuePair("cid",list.get(i).getId()));
  
                             params.add(new BasicNameValuePair("cid",String.valueOf(selected_cid)));
  
                           //  catid=list.get(i).getId();
                        // catidtemp=list.get(i).getId();
  
  
                       }
  
                      catidtemp=String.valueOf(selected_cid);
                  // catidtemp=list.get(i).getId();
                   System.out.println("cattttttiiiiddd????"+catidtemp);
                   params.add(new BasicNameValuePair("action", "clientproduct"));
  
                   System.out.println("su gayu server ma????"+params);
  
                   Log.d("request!", "starting");
                   // getting product details by making HTTP request
                   JSONObject json = jsonParser.makeHttpRequest (
                       FEEDBACK_URL, "POST", params);
                   //check your log for json response
                   Log.d("Login attempt", json.toString());
  
                   JSONObject jobj = new JSONObject(json.toString());
                   final String msg = jobj.getString("msg");
  
  
  
  
                   return json.getString(FEEDBACK_SUCCESS);
  
               }catch (JSONException e) {
                   e.printStackTrace();
               }
               return null;
          }
  
          // After completing background task Dismiss the progress dialog
  
          protected void onPostExecute(String file_url) {
              //dismiss the dialog once product deleted
              pDialog.dismiss();
  
              //parentcat.getText().clear();
      }}
        public class SuggestGetSetClientProduct {
  
              String id,name;
              public SuggestGetSetClientProduct(String id, String name){
                  this.setId(id);
                  this.setName(name);
              }
              public String getId() {
                  return id;
              }
  
              public void setId(String id) {
                  this.id = id;
              }
  
              public String getName() {
                  return name;
              }
  
              public void setName(String name) {
                  this.name = name;
              }
          }
  
         public class JsonParseClientProduct {
  
  
              double current_latitude,current_longitude;
              public JsonParseClientProduct(){}
              public JsonParseClientProduct(double current_latitude,double current_longitude){
                  this.current_latitude=current_latitude;
                  this.current_longitude=current_longitude;
              }
              public List&lt;SuggestGetSetClientProduct&gt; getParseJsonWCF(String sName)
                 {
                  List&lt;SuggestGetSetClientProduct&gt; ListData = new ArrayList&lt;SuggestGetSetClientProduct&gt;();
                  try {
                     String temp=sName.replace(" ", "%20");
  
  
                     System.out.println("what the...."+js);
                     URLConnection jc = js.openConnection();
                     BufferedReader reader = new BufferedReader(new InputStreamReader(jc.getInputStream()));
                     String line = reader.readLine();
                     JSONObject jsonResponse = new JSONObject(line);
                     Log.d("test", "Response : " +jsonResponse);
                     JSONArray jsonArray = jsonResponse.getJSONArray("clientproduct");
                     for(int i = 0; i &lt; jsonArray.length(); i++){
                         JSONObject r = jsonArray.getJSONObject(i);
                         ListData.add(new SuggestGetSetClientProduct(r.getString("pid"),r.getString("name")));
                     }
  
  
                 } catch (Exception e1) {
                     // TODO Auto-generated catch block
                     e1.printStackTrace();
                 }
                  return ListData;
  
                 }
          }
          public class SuggestionAdapterClientProduct extends ArrayAdapter&lt;String&gt;{
  
  
              protected static final String TAG = "SuggestionAdapter";
              List&lt;String&gt; suggestions = new ArrayList&lt;String&gt;();
             // private List&lt;String&gt; suggestions;
              public SuggestionAdapterClientProduct(Activity context, String nameFilter) {
                  super(context, android.R.layout.simple_dropdown_item_1line);
                  suggestions = new ArrayList&lt;String&gt;();
              }
  
              @Override
              public int getCount() {
                  return suggestions.size();
              }
  
              @Override
              public String getItem(int index) {
                  return suggestions.get(index);
              }
  
              @Override
              public Filter getFilter() {
                  Filter myFilter = new Filter() {
                      @Override
                      protected FilterResults performFiltering(CharSequence constraint) {
                          FilterResults filterResults = new FilterResults();
                          JsonParseClientProduct jp=new JsonParseClientProduct();
                          if (constraint != null) {
                              // A class that queries a web API, parses the data and
                              // returns an ArrayList&lt;GoEuroGetSet&gt;
  
                              List&lt;SuggestGetSetClientProduct&gt; new_suggestions = new ArrayList&lt;SuggestGetSetClientProduct&gt;();
                              new_suggestions =jp.getParseJsonWCF(constraint.toString());
                              Log.d("test", "Size of array : " +new_suggestions.size());
                            //List&lt;SuggestGetSetClientProduct&gt; new_suggestions =jp.getParseJsonWCF(constraint.toString());
                              suggestions.clear();
                              /*for (int i=0;i&lt;new_suggestions.size();i++) {
                              suggestions.add(new_suggestions.get(i).getName());
                          }*/
  
                          for (int i=0;i&lt;new_suggestions.size();i++) {
                              String name=new_suggestions.get(i).getName();
                              String id=new_suggestions.get(i).getId();
                              System.out.println("checis id"+id);
                              if(name.contains(constraint)){
                              suggestions.add(new_suggestions.get(i).getName());
  
  
                                 }   
                          }
                              // Now assign the values and count to the FilterResults
                              // object
                              filterResults.values = suggestions;
                              filterResults.count = suggestions.size();
                          }
                          return filterResults;
                      }
  
                      @Override
                      protected void publishResults(CharSequence contraint,
                              FilterResults results) {
                          if (results != null &amp;&amp; results.count &gt; 0) {
                              notifyDataSetChanged();
                          } else {
                              notifyDataSetInvalidated();
                          }
                      }
                  };
                  return myFilter;
              }
          }
  }
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/L88P8.png" alt="enter image description here">
  <img src="https://i.stack.imgur.com/iZvsb.png" alt="enter image description here">
  <img src="https://i.stack.imgur.com/5tuXd.png" alt="enter image description here"></p>