title: Retrieve selected data from checkbox from list in android
body: <p>How can I retrieve selected data from a checkbox list?</p>
  
  <p>I have made a list and put a <code>checkbox</code> in the list and now I want to retrieve the selected data from it.
  how can I do this?</p>
  
  <p>Here is my sample code</p>
  
  <pre><code>public class PlanetsActivity extends Activity {
  
    private ListView mainListView;
    private Planet[] planets;
    private ArrayAdapter&lt;Planet&gt; listAdapter;
  
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
  
      ContentResolver cr = getContentResolver();
      Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
          null, null, null);
  
      // Find the ListView resource.
      mainListView = (ListView) findViewById(R.id.mainListView);
  
      // When item is tapped, toggle checked properties of CheckBox and
      // Planet.
      mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView&lt;?&gt; parent, View item,
          int position, long id) {
          Planet planet = listAdapter.getItem(position);
          planet.toggleChecked();
          PlanetViewHolder viewHolder = (PlanetViewHolder) item.getTag();
          viewHolder.getCheckBox().setChecked(planet.isChecked());
        }
      });
  
      // Create and populate planets.
      planets = (Planet[]) getLastNonConfigurationInstance();
      // planets = new Planet[10];
      // planets.Add("asdf");
      ArrayList&lt;Planet&gt; planetList = new ArrayList&lt;Planet&gt;();
  
      if (planets == null) {
        if (cur.getCount() &gt; 0) {
          planets = new Planet[cur.getCount()] ;
          int i=0;
          while (cur.moveToNext()) {
            String id = cur.getString(cur
              .getColumnIndex(ContactsContract.Contacts._ID));
            String name = cur.getString(cur
              .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
  
            //Toast.makeText(getApplicationContext(), name,
            //Toast.LENGTH_LONG).show();
  
            planets = new Planet[] { new Planet(name) };
            planetList.addAll(Arrays.asList(planets));
  
            //planets[i].setName(name);
            //planets[i].setChecked(false)
  
            if(Integer.
              parseInt(cur
                .getString(cur
                .getColumnIndex(ContactsContract
                .Contacts.HAS_PHONE_NUMBER))) &gt; 0) {
                    // Query phone here. Covered next
            }
            i++;
          }
        }
  
        // planets = new Planet[] { new Planet("Mercury"),
        // new Planet("Venus"), new Planet("Earth"),
        // new Planet("Mars"), new Planet("Jupiter"),
        // new Planet("Saturn"), new Planet("Uranus"),
        // new Planet("Neptune"), new Planet("Ceres"),
        // new Planet("Pluto"), new Planet("Haumea"),
        // new Planet("Makemake"), new Planet("Eris") };
      }
  
  
      // Set our custom array adapter as the ListView's adapter.
      listAdapter = new PlanetArrayAdapter(this, planetList);
      mainListView.setAdapter(listAdapter);
  }
  
  /** Holds planet data. */
  private static class Planet {
    private String name = "";
    private boolean checked = false;
    public Planet() {}
  
    public Planet(String name) {
      this.name = name;
    }
  
    public Planet(String name, boolean checked) {
      this.name = name;
      this.checked = checked;
    }
  
    public String getName() {
      return name;
    }
  
    public void setName(String name) {
      this.name = name;
    }
  
    public boolean isChecked() {
      return checked;
    }
  
    public void setChecked(boolean checked) {
      this.checked = checked;
    }
  
    public String toString() {
      return name;
    }
  
    public void toggleChecked() {
      checked = !checked;
    }
  }
  
  /** Holds child views for one row. */
  private static class PlanetViewHolder {
      private CheckBox checkBox;
      private TextView textView;
  
      public PlanetViewHolder() {
      }
  
      public PlanetViewHolder(TextView textView, CheckBox checkBox) {
          this.checkBox = checkBox;
          this.textView = textView;
      }
  
      public CheckBox getCheckBox() {
          return checkBox;
      }
  
      public void setCheckBox(CheckBox checkBox) {
          this.checkBox = checkBox;
      }
  
      public TextView getTextView() {
          return textView;
      }
  
      public void setTextView(TextView textView) {
          this.textView = textView;
      }
  }
  
  /** Custom adapter for displaying an array of Planet objects. */
  private static class PlanetArrayAdapter extends ArrayAdapter&lt;Planet&gt; {
  
      private LayoutInflater inflater;
  
      public PlanetArrayAdapter(Context context, List&lt;Planet&gt; planetList) {
          super(context, R.layout.simplerow, R.id.rowTextView, planetList);
          // Cache the LayoutInflate to avoid asking for a new one each time.
          inflater = LayoutInflater.from(context);
      }
  
      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
          // Planet to display
          Planet planet = (Planet) this.getItem(position);
  
          // The child views in each row.
          CheckBox checkBox;
          TextView textView;
  
          // Create a new row view
          if (convertView == null) {
              convertView = inflater.inflate(R.layout.simplerow, null);
  
              // Find the child views.
              textView = (TextView) convertView
                      .findViewById(R.id.rowTextView);
              checkBox = (CheckBox) convertView.findViewById(R.id.CheckBox01);
  
              // Optimization: Tag the row with it's child views, so we don't
              // have to
              // call findViewById() later when we reuse the row.
              convertView.setTag(new PlanetViewHolder(textView, checkBox));
  
              // If CheckBox is toggled, update the planet it is tagged with.
              checkBox.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View v) {
                      CheckBox cb = (CheckBox) v;
                      Planet planet = (Planet) cb.getTag();
                      planet.setChecked(cb.isChecked());
                  }
              });
          }
          // Reuse existing row view
          else {
              // Because we use a ViewHolder, we avoid having to call
              // findViewById().
              PlanetViewHolder viewHolder = (PlanetViewHolder) convertView
                      .getTag();
              checkBox = viewHolder.getCheckBox();
              textView = viewHolder.getTextView();
          }
  
          // Tag the CheckBox with the Planet it is displaying, so that we can
          // access the planet in onClick() when the CheckBox is toggled.
          checkBox.setTag(planet);
  
          // Display planet data
          checkBox.setChecked(planet.isChecked());
          textView.setText(planet.getName());
  
          return convertView;
      }
  
  }
  
  public Object onRetainNonConfigurationInstance() {
      return planets;
  }
  }  
  </code></pre>
  
  <p>I want to send the selected data to next activity</p>