title: Selected items from listview with checkbox in android
body: <p>I have created a listview with checkboxes and search functionality. The search is working fine, the checkboxes are also showing. <strong>Now what I want is, I want to get the names of all the checked list items onclick of a button. I also want to know how will it be possible to show another textview, say price below item name.</strong></p>
  
  <p>The <strong>main layout</strong>:</p>
  
  <pre><code>&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:orientation="vertical" &gt;
  
      &lt;!-- Editext for Search --&gt;
  
      &lt;EditText
          android:id="@+id/inputSearch"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:hint="Search products.."
          android:inputType="textVisiblePassword" /&gt;
  
      &lt;ListView
          android:id="@+id/mainListView"
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="1" &gt;
      &lt;/ListView&gt;
  
      &lt;Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_gravity="center_horizontal"
          android:layout_marginTop="5dp"
          android:onClick="showResult"
          android:text="Show Result" &gt;
      &lt;/Button&gt;
  
  &lt;/LinearLayout&gt;
  </code></pre>
  
  <p>The <strong>simplerow.xml</strong> file:</p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"&gt;
  
    &lt;TextView android:id="@+id/rowTextView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"
      android:padding="10dp"
      android:textAppearance="?android:attr/textAppearanceMedium"
      android:textStyle="bold"
      android:textSize="16sp" &gt;
    &lt;/TextView&gt;
  
    &lt;CheckBox android:id="@+id/CheckBox01" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp"
      android:layout_alignParentRight="true" android:layout_marginRight="6sp"
      android:focusable="false"&gt;
    &lt;/CheckBox&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>The <strong>activity</strong>:</p>
  
  <pre><code>public class MultiSelectList extends Activity {
  
       // Search EditText
         EditText inputSearch;
  
      private ListView mainListView;
      private mItems[] itemss;
      private ArrayAdapter&lt;mItems&gt; listAdapter;
      ArrayList&lt;String&gt; checked = new ArrayList&lt;String&gt;();
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
  
          // Find the ListView resource.
          mainListView = (ListView) findViewById(R.id.mainListView);
          inputSearch = (EditText) findViewById(R.id.inputSearch);
  
          // 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) {
                          mItems planet = listAdapter.getItem(position);
                          planet.toggleChecked();
                          SelectViewHolder viewHolder = (SelectViewHolder) item
                                  .getTag();
                          viewHolder.getCheckBox().setChecked(planet.isChecked());
  
                      }
                  });
  
          // Create and populate planets.
          itemss = (mItems[]) getLastNonConfigurationInstance();
  
          ArrayList&lt;mItems&gt; planetList = new ArrayList&lt;mItems&gt;();
  
          planetList.add(new mItems("DJ- Android"));
          planetList.add(new mItems("Android"));
          planetList.add(new mItems("iPhone"));
          planetList.add(new mItems("BlackBerry"));
          planetList.add(new mItems("Java"));
          planetList.add(new mItems("PHP"));
          planetList.add(new mItems(".Net"));
          planetList.add(new mItems("Jhoomla"));
  
          // Set our custom array adapter as the ListView's adapter.
          listAdapter = new SelectArralAdapter(this, planetList);
          mainListView.setAdapter(listAdapter);
  
           /**
              * Enabling Search Filter
              * */
             inputSearch.addTextChangedListener(new TextWatcher() {
  
                 @Override
                 public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                     // When user changed the Text
                     MultiSelectList.this.listAdapter.getFilter().filter(cs);   
                 }
  
                 @Override
                 public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                         int arg3) {
                     // TODO Auto-generated method stub
  
                 }
  
                 @Override
                 public void afterTextChanged(Editable arg0) {
                     // TODO Auto-generated method stub                          
                 }
             });
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // TODO Auto-generated method stub
          menu.add(0, 1, Menu.NONE, "Products");
          return super.onCreateOptionsMenu(menu);
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          // TODO Auto-generated method stub
          switch (item.getItemId()) {
          case 1:
  
              for (int i = 0; i &lt; checked.size(); i++) {
                  Log.d("pos : ", "" + checked.get(i));
              }
              break;
          }
          return super.onOptionsItemSelected(item);
      }
  
      /** Holds planet data. */
      private static class mItems {
          private String name = "";
          private boolean checked = false;
  
          public mItems() {
          }
  
          public mItems(String name) {
              this.name = name;
          }
  
          public mItems(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 SelectViewHolder {
          private CheckBox checkBox;
          private TextView textView;
  
          public SelectViewHolder() {
          }
  
          public SelectViewHolder(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 SelectArralAdapter extends ArrayAdapter&lt;mItems&gt; {
          private LayoutInflater inflater;
  
          public SelectArralAdapter(Context context, List&lt;mItems&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
              mItems planet = (mItems) 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 SelectViewHolder(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;
                          mItems planet = (mItems) cb.getTag();
                          planet.setChecked(cb.isChecked());
                      }
                  });
              }
              // Reuse existing row view
              else {
                  // Because we use a ViewHolder, we avoid having to call
                  // findViewById().
                  SelectViewHolder viewHolder = (SelectViewHolder) 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 itemss;
      }
  
  
  
  
  }
  </code></pre>
  
  <p><strong>What should I do to get the desired result?</strong></p>