title: MultiChoiceModeListener.onItemCheckedStateChanged() only executes when item is checked
body: <p>I'm having a problem.
  In my main activity, which extends <code>ListActivity</code> and Implements <code>MultiChoiceModeListener</code>, I have the overriden method <code>onItemCheckedStateChanged()</code>. </p>
  
  <p>The problem is that this method only gets executed when the new checked state of the itrem is CHECKED. If I uncheck it, it doesn't execute. </p>
  
  <p>I check the item programatically from my <code>DataListAdapter</code>. My item layout contains a <code>CheckBox</code>, that when it's checked, i use the control's <code>onCheckedChanged()</code> to change the list item check state.</p>
  
  <p>Any clues?</p>
  
  <p>Here is my code (relevant code only):</p>
  
  <p><strong>Main Activity:</strong></p>
  
  <pre><code>public class MainActivity extends ListActivity implements MultiChoiceModeListener
  {
      @Override
      protected void onCreate (Bundle bundle)
      {
          super.onCreate (bundle);
          // Set our view from the "main" layout resource
          setContentView (R.layout.main);
  
          this.getListView().setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
          this.getListView().setMultiChoiceModeListener(this);
  
          _dataAdapter = new ServerListAdapter (this);
          this.getListView(). setAdapter(_dataAdapter);
          registerForContextMenu (this.getListView());
      }
  
      public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean isChecked) 
      {
          // Some code that only is executed when the setItemChecked is true on the DataListAdapter.        
      }
  }
  </code></pre>
  
  <p><strong>List Adapter</strong></p>
  
  <pre><code>public class ServerListAdapter extends BaseAdapter 
  {
      @Override
      public View getView (final int position, View convertView, ViewGroup parent)
      {
          View view = (convertView == null ?
                  _context.getLayoutInflater().inflate(
                  R.layout.server_list_item_view,
                  parent, 
                  false) : convertView);
  
          final ListView listView = (ListView)parent;
          ((CheckBox)view.findViewById(R.id.chkItemServerSelected)).setOnCheckedChangeListener(new OnCheckedChangeListener() 
          {
              @Override
              public void onCheckedChanged(CompoundButton pCompound, boolean arg1) 
              {
                  listView.setItemChecked(position, pCompound.isChecked());
              }       
          });
  
          return view;
      }
  }
  </code></pre>