title: Passing the contents of the selected row to another activity
body: <p>Can anyone advise me on how to pass the values of the selected row in a custom viewList to another activity in android. What i mean is that i have a custom ListView which has 2 textView and a checkbox. When the user checks a checkbox and hits the submit button i want to store the values of the 2 textView fields and pass it along to the next activity. Passing to the activity is not the problem. The problem is i cant figure out how to store the values of the checked row.
  The code is pasted below.</p>
  
  <pre><code>import java.util.ArrayList;
  import java.util.List;
  
  import android.app.Activity;
  import android.content.ContentResolver;
  import android.content.Context;
  import android.content.Intent;
  import android.database.Cursor;
  import android.os.Bundle;
  import android.provider.ContactsContract;
  import android.util.Log;
  import android.util.SparseBooleanArray;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.view.ViewGroup;
  import android.widget.AdapterView;
  import android.widget.AdapterView.OnItemClickListener;
  import android.widget.BaseAdapter;
  import android.widget.Button;
  import android.widget.CheckBox;
  import android.widget.CompoundButton;
  import android.widget.ListView;
  import android.widget.TextView;
  import android.widget.Toast;
  
  public class contacts extends Activity implements OnItemClickListener {
      static final String TAG = "contacts";
      ArrayList&lt;String&gt; contactName = new ArrayList&lt;String&gt;();
      ArrayList&lt;String&gt; contactNumber = new ArrayList&lt;String&gt;();
      ArrayList&lt;String&gt; checkboxArray = new ArrayList&lt;String&gt;();
      MyAdapter myAdapter;
      Button AddNumber;
      String numberIntent;
      View vi;
      ListView listView;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.listview);
  
          getAllContacts(this.getContentResolver());
          listView = (ListView) findViewById(R.id.lists);
          myAdapter = new MyAdapter();
          listView.setAdapter(myAdapter);
          listView.setOnItemClickListener(this);
          listView.setItemsCanFocus(false);
          listView.setTextFilterEnabled(true);
          // adding
          AddNumber = (Button) findViewById(R.id.AddNumbers);
          AddNumber.setOnClickListener(new OnClickListener() {
  
              @Override
              public void onClick(View v) {
  
                  StringBuilder checkedContacts = new StringBuilder();
                  Log.d(TAG, "onClick" + myAdapter.mCheckStates.size());
                  for (int i = 0; i &lt; contactName.size(); i++)
  
                  {
                      if (myAdapter.mCheckStates.get(i) == true) {
                          checkedContacts.append(contactName.get(i).toString());
                          checkedContacts.append("\n");
  
                      } else {
                          Log.d(TAG, "No OnClick" + contactName.get(i).toString());
                      }
  
                  }
  
                  Toast.makeText(contacts.this, checkedContacts,
                          Toast.LENGTH_LONG).show();
  
                  SparseBooleanArray checked = listView.getCheckedItemPositions();
  
              }
          });
  
      }
  
      @Override
      public void onItemClick(AdapterView&lt;?&gt; arg0, View arg1, int arg2, long arg3) {
          myAdapter.toggle(arg2);
      }
  
      public void getAllContacts(ContentResolver cr) {
  
          Cursor cursor = cr.query(
                  ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,
                  null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
                          + " COLLATE LOCALIZED ASC");
          while (cursor.moveToNext()) {
              String name = cursor
                      .getString(cursor
                              .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
              String phoneNumber = cursor
                      .getString(cursor
                              .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
              Log.d(TAG, "getAllContacts" + phoneNumber);
              contactName.add(name);
              contactNumber.add(phoneNumber);
  
          }
  
          cursor.close();
          Intent in = new Intent(this, TrackLogic.class);
          in.putExtra("contact", contactName.toArray());
  
          in.putExtra("contact1", contactNumber.toArray());
      }
  
      class MyAdapter extends BaseAdapter implements
              CompoundButton.OnCheckedChangeListener {
          private SparseBooleanArray mCheckStates;
          LayoutInflater mInflater;
          TextView phoneView, contactView;
          CheckBox checkBox;
  
          MyAdapter() {
              mCheckStates = new SparseBooleanArray(contactName.size());
              mInflater = (LayoutInflater) contacts.this
                      .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          }
  
          @Override
          public int getCount() {
              return contactName.size();
          }
  
          @Override
          public Object getItem(int position) {
              return position;
          }
  
          @Override
          public long getItemId(int position) {
  
              return 0;
          }
  
          @Override
          public View getView(final int position, View convertView,
                  ViewGroup parent) {
              vi = convertView;
              if (convertView == null)
                  vi = mInflater.inflate(R.layout.row, null);
              contactView = (TextView) vi.findViewById(R.id.contact_name);
              phoneView = (TextView) vi.findViewById(R.id.phone_number);
              checkBox = (CheckBox) vi.findViewById(R.id.checkBox_id);
              contactView.setText(contactName.get(position));
              phoneView.setText(contactNumber.get(position));
              checkBox.setTag(position);
              checkBox.setChecked(mCheckStates.get(position, false));
              checkBox.setOnCheckedChangeListener(this);
  
  
              return vi;
          }
  
          public boolean isChecked(int position) {
  
              return mCheckStates.get(position, false);
          }
  
          public void setChecked(int position, boolean isChecked) {
              mCheckStates.put(position, isChecked);
              Log.d(TAG, "setChecked");
              notifyDataSetChanged();
          }
  
          public void toggle(int position) {
              setChecked(position, !isChecked(position));
          }
  
          @Override
          public void onCheckedChanged(CompoundButton buttonView,
                  boolean isChecked) {
  
              mCheckStates.put((Integer) buttonView.getTag(), isChecked);
          }
      }
  }
  </code></pre>
  
  <p>Any help will be greatly appreciated.. Thanks!</p>