 <p>You can overcome this easily by using the <code>ChoiceMode</code> option <code>CHOICE_MODE_MULTIPLE</code> for the <code>ListView</code> as used in the <a href="https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/view/List11.java?autodive=0%2F%2F" rel="nofollow">API Demo</a> -</p> <pre><code>public class List11 extends ListActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setListAdapter(new ArrayAdapter&lt;String&gt;(this, android.R.layout.simple_list_item_multiple_choice, GENRES)); final ListView listView = getListView(); listView.setItemsCanFocus(false); listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); } private static final String[] GENRES = new String[] { "Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama", "Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller" }; } </code></pre> <p><strong>EDIT</strong> Alternate for your context- Have an extra boolean object with your <code>HashMap&lt;String, Object&gt;</code> <code>isChecked</code> and initialize it to false when you populate your <code>list</code>.</p> <p>Set your <code>CheckBox</code> in <code>getView()</code> method as- </p> <pre><code>check.setChecked(Boolean.parseBoolean(dataMap.get("isChecked")); </code></pre> <p>Now in the listener <code>OnCheckedChangeListener()</code> set the value of your <code>dataMap</code> true or false accordingly.</p>