title: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
body: <p>I am trying to get datafrom database in a list.</p>
  <p>This is my code:</p>
  <pre><code>private class LoadData extends AsyncTask&lt;Void, Void, Void&gt; { 
      private ProgressDialog progressDialog;  
      @Override
      
      protected void onPreExecute() {
  
      CharSequence contentTitle = getString(R.string.loading);
      this.progressDialog = ProgressDialog.show(TabFreeBooksActivity.this,&quot;&quot;,contentTitle);   
      }
      @Override
      protected void onPostExecute(final Void unused) {  
          this.progressDialog.dismiss();  
          showoffreebooks();
  
      }
  
      @Override
      protected Void doInBackground(Void... params) {
          // TODO Auto-generated method stub  
          // HTTP post
          sharedPreference3 = getSharedPreferences(downnplace, 0);
          downoptionplace = sharedPreference3.getString(&quot;downloadflagplace&quot;,&quot;internal&quot;);
          Cursor bokgids = ggp.gids();
          do{
              
              allgids.add(bokgids.getString(0));
              
          }
          while(bokgids.moveToNext());
          for(int o=0;o&lt;allgids.size();o++)
          {
          
          ggp.unupdatduplicate(allgids.get(o));   
          System.out.println(&quot;allgids2: &quot;+allgids.get(o));
          System.out.println(&quot;ggg: &quot;+ggp.unupdatduplicate(allgids.get(o)));
          }
          
          getoffrecentbooks();        
      
  
          return null;
  
      }
  
  }
  </code></pre>
  <p>the call of AsyncTask is:</p>
  <pre><code> public void onCreate(Bundle savedInstanceState) {
  
      super.onCreate(savedInstanceState);
      setContentView(R.layout.demo);
      frboks= new DAOfreeboks(this);
      ggp= new DAOgroup(this);
      sharedPreference3 = getSharedPreferences(downnplace, 0);
      downoptionplace = sharedPreference3.getString(&quot;downloadflagplace&quot;,&quot;internal&quot;);
      Cursor bokgids = ggp.gids();
      do{
          allgids.add(bokgids.getString(0));
      }
      while(bokgids.moveToNext());
      
      for(int o=0;o&lt;allgids.size();o++)
      {       
          ggp.unupdatduplicate(allgids.get(o));   
      }
      if(isNetworkConnected(this))
      {
          connection=true;
      }else 
      {
          connection=false;
      }
  
      new LoadData().execute();
  
  }
  </code></pre>
  <p>this is the implementation of showoffreebooks() function:</p>
  <pre><code>public void showoffreebooks()
  {
       undelFREEBNME.clear();
       undelFREEAUTHNME.clear();
       undelFREEBCOVNME.clear();
       undelFREEbokprice.clear();
       undelFREEbokabout.clear();
       undelFREEbokpth.clear();
       undelFREEbokid.clear();
       undelFREEbokdel.clear();
       undelFREEbokgrp.clear();
       
       
       for(int  i=0;i&lt;allFREEbokdel.size();i++)
      {
          ////////////////check my books if it's marked as deleted//////////////
          if(allFREEbokdel.get(i).equalsIgnoreCase(&quot;false&quot;))
          {
              undelFREEBNME.add(allFREEBNME.get(i));
              undelFREEbokid.add(allFREEbokid.get(i));
              undelFREEAUTHNME.add(allFREEAUTHNME.get(i));
              undelFREEBCOVNME.add(allFREEBCOVNME.get(i));
              undelFREEbokpth .add(allFREEbokpth.get(i));
              undelFREEbokgrp.add(allFREEbokgrp.get(i));
  
          }
      }
   
       System.out.println(&quot;undelFREEBNME.size: &quot;+undelFREEBNME.size());
       System.out.println(&quot;undelFREEBNME.size2: &quot;+undelFREEBNME);
       
   for(int i=0;i&lt;undelFREEBNME.size();i++)
      {
          /////////////check if it's in a group of books or not////////////
          if(undelFREEbokgrp.get(i).equalsIgnoreCase(&quot;0&quot;))
          { 
  
              GETFREEBNME.add(undelFREEBNME.get(i));
              GETFREEbokid.add(undelFREEbokid.get(i));
              GETFREEBCOVNME.add(undelFREEBCOVNME.get(i));
              GETFREEbokgrp.add(undelFREEbokgrp.get(i));
              GETFREEbokpth .add(undelFREEbokpth.get(i));
              GETFREEAUTHNME.add(undelFREEAUTHNME.get(i));
              
          }
          else
          {
              offlinegetgroupboks(undelFREEbokgrp.get(i));
              
              if(offfrgdbct.get(i).equals(&quot;false&quot;))  // it tells me the Exception is here 
              {
                  GETFREEBCOVNME.add(offfrgcov.get(0));
                  GETFREEbokid.add(offfrgid.get(0));
                  GETFREEBNME.add(offfrgnme.get(0));
                  GETFREEbokgrp.add(undelFREEbokgrp.get(i));
                  GETFREEbokpth .add(undelFREEbokpth.get(i));
                  GETFREEAUTHNME.add(undelFREEAUTHNME.get(i));
                  
                  updatedublicate(undelFREEbokgrp.get(i));
              }
                                      
          }
      }
  </code></pre>
  <p>the implementation of offlinegetgroupboks(String id) function:</p>
  <pre><code> public void offlinegetgroupboks(String id) {
          
          try{
              offfrgcov.clear();
              offfrgnme.clear();
              offfrgid.clear();
              offfrgdbct.clear();
              Cursor bookslist = ggp.fetchAlldata(id);
              
              if( bookslist != null ){
  
              do{
                  offfrgcov.add(bookslist.getString(0));
                  offfrgnme.add(bookslist.getString(1));
                  offfrgid.add(bookslist.getString(2));
                  offfrgdbct.add(bookslist.getString(3));
                  
              }
              while(bookslist.moveToNext());
              }
              
          }catch(Exception e){
              e.printStackTrace();    
          }
  
      }
  </code></pre>
  <p>but it gives me the following Exception:</p>
  <pre><code>09-05 22:34:12.554: E/AndroidRuntime(733): FATAL EXCEPTION: main
  09-05 22:34:12.554: E/AndroidRuntime(733): java.lang.IndexOutOfBoundsException: Invalid index 2, size is 1
  09-05 22:34:12.554: E/AndroidRuntime(733):  at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at java.util.ArrayList.get(ArrayList.java:311)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at cx.hell.android.pdfview.TabFreeBooksActivity.showoffreebooks(TabFreeBooksActivity.java:382)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at cx.hell.android.pdfview.TabFreeBooksActivity$LoadData.onPostExecute(TabFreeBooksActivity.java:191)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at cx.hell.android.pdfview.TabFreeBooksActivity$LoadData.onPostExecute(TabFreeBooksActivity.java:1)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at android.os.AsyncTask.finish(AsyncTask.java:417)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at android.os.AsyncTask.access$300(AsyncTask.java:127)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at android.os.Handler.dispatchMessage(Handler.java:99)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at android.os.Looper.loop(Looper.java:123)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at android.app.ActivityThread.main(ActivityThread.java:4627)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at java.lang.reflect.Method.invokeNative(Native Method)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at java.lang.reflect.Method.invoke(Method.java:521)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
  09-05 22:34:12.554: E/AndroidRuntime(733):  at dalvik.system.NativeStart.main(Native Method)
  </code></pre>