title: Android: How to pass an object from one activity to another in an onClick method and use it for an AsyncTask class
body: <p>I have a problem that is a little hard to explain. I am building an android application for trip planning. I have a main activity that contains the map item and some other buttons and an  AsyncTask class where the communication with the server is done and the path is displayed on the map. I am trying to make it work offline by saving the response from the server in sqllite database.  </p>
  
  <p>I have an Activity called MainActivity. There, I have a method for menu items</p>
  
  <pre><code>public boolean onOptionsItemSelected(final MenuItem pItem) {        
      switch (pItem.getItemId()) {
      case R.id.recent_trips:
              startActivity(new Intent(this, recentTripsActivity.class));
              break;
      default:
               break;
          }
  
          return false;
      }
  }
  </code></pre>
  
  <p>Here is the current method for calling the  AsyncTask class</p>
  
  <pre><code>btnPlanTrip.setOnClickListener(new OnClickListener() {
  
      @Override
      public void onClick(View v) {
        tripReq = new TripRequest(MainActivity.this,activityHandler,db);
      tripReq.execute(request);
      }
       });
  }
  </code></pre>
  
  <p>When I click on the recent_trips from the menu button, recentTripsActivity opens. Basically, in this class I retrieve some data from mysqllite database and present it on a listView through an adapter. There, I have a method view.setOnClickListener in which when a list item is clicked  I take a certain value (res=listItem.getofflineResult();). I would like to use that value on Main Activity (see below for more details).
   Here is the code.</p>
  
  <pre><code>public class recentTripsActivity extends Activity implements Serializable {
      private ImageButton stopSearch;
      private AutoCompleteTextView searchField;
      SQLiteDatabase db;
      OfflineTripRequest tripReq;
      String res;
      //db = openOrCreateDatabase("AndroidDatabase.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
  
  
       private ListView listview;
       private ArrayList mListItem;
       ItemBO listItem;
  
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
              setContentView(R.layout.recent_trips); 
  
              //open database connection
              db = openOrCreateDatabase("AndroidDatabase.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
              int i=0;
              String [] str={"id","description","offlineResult"};
              listview = (ListView) findViewById(R.id.lview_trips);
  
              mListItem = new ArrayList&lt;ItemBO&gt;();
  
              Cursor cursor = db.query("tbl_offlinePathResult",str, null, null, null, null, null);
  
              cursor.moveToFirst();
              while (!cursor.isAfterLast()) {
                  i++;
                  ItemBO listItem = new ItemBO(i,cursor.getString(1),cursor.getString(2));
                  mListItem.add(listItem);
                  cursor.moveToNext();
                  if(i==10){
                      break;
                  }
              }
              // Make sure to close the cursor
              cursor.close();
              i++;
  
              listview.setAdapter(new ListAdapter(recentTripsActivity.this, R.id.lview_trips,mListItem));
              db.close();
      }
  
  
  //***ListAdapter***
   class ListAdapter extends ArrayAdapter { //--CloneChangeRequired
      private ArrayList mList; //--CloneChangeRequired
      private Context mContext;
  
      @SuppressWarnings("unchecked")
      public ListAdapter(Context context, int textViewResourceId,
              ArrayList list) { //--CloneChangeRequired
          super(context, textViewResourceId, list);
          this.mList = list;
          this.mContext = context;
      }
  
      public View getView(int position, View convertView, ViewGroup parent) {
          View view = convertView;
          try {
              if (view == null) {
                  LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                  view = vi.inflate(R.layout.list_item_saved_paths, null); //--CloneChangeRequired(list_item)
              }
              final ItemBO listItem = (ItemBO) mList.get(position); //--CloneChangeRequired
              if (listItem != null) {
                  // setting list_item views
                  ((TextView) view.findViewById(R.id.tv_name))
                          .setText(listItem.getDescription());
  
                  view.setOnClickListener(new OnClickListener() {
                      public void onClick(View arg0) { //--clickOnListItem
                           res=listItem.getofflineResult(); 
  
                      }
                  });
              }
          } catch (Exception e) {
              Log.i(recentTripsActivity.ListAdapter.class.toString(), e.getMessage());
          }
          return view;
      }
   }
  }
  </code></pre>
  
  <p>I would like to pass the data mentioned above(res=listItem.getofflineResult() to MainActivity. <strong>After doing that I would like to call an  AsyncTask class and pass that data to that class.</strong> How can I do all this by clicking on the listItem? As I said before the map is on MainActivity but the click will happen from a different Activity. 
  I hope I made my self clear enough, If you have any questions please ask me</p>