title: CheckBox in a row of ListView
body: <p>How do I override a CheckBox's default <code>onClick()</code> behaviour?</p>
  
  <p><strong>Use case</strong> I want the checkBox to reflect some boolean status of the object being rendered in the row view. When the user clicks on the row (including the checkBox), some process will run which may alter the objects state (the boolean variable).</p>
  
  <p>Now how do I prevent the CheckBox's default onClick behaviour from kicking in? In other words I want <code>CheckBox.onClick()</code> to call <code>theCustomAdapter.onItemClick()</code>. How do I achieve this?</p>
  
  <p>On a second thought, is there any such widget object which just displays an on/off status &amp; does not implement Clickable? </p>
  
  <p><strong>Custom Adapter</strong></p>
  
  <pre><code>public class UserListViewAdapter extends ArrayAdapter&lt;User&gt; implements AdapterView.OnItemClickListener
  {
      private final Context context;
      private final List&lt;User&gt; users;
  
      public UserListViewAdapter(Context context, int resource, List&lt;User&gt; users)
      {
          super(context, resource, users);
          this.context = context;
          this.users = users;
      }
  
      public View getView(int position, View convertView, ViewGroup parent)
      {
          LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          View row = layoutInflater.inflate(R.layout.user, parent, false);
  
  //        set the loggedIn? isCurrent? radio buttons
          CheckBox checkBox = (CheckBox) row.findViewById(R.id.isLoggedIn);
          checkBox.setChecked(users.get(position).isLoggedIn());
          checkBox = (CheckBox) row.findViewById(R.id.isCurrent);
          checkBox.setChecked(users.get(position).isCurrent());
  
  //        fill the user name
          TextView textView = (TextView) row.findViewById(R.id.userName);
          textView.setText(users.get(position).getUserName());
  
  //        fill the user id
          textView = (TextView) row.findViewById(R.id.userId);
          textView.setText(users.get(position).getUserId());
  
  //        return the row
          return row;
      }
  
  //    @Override
      public void onItemClick(AdapterView&lt;?&gt; adapterView, View view, int i, long l)
      {
          Log.i("Clicked", adapterView.toString());
          Toast.makeText(this.context, "Clicked! "+l, Toast.LENGTH_LONG).show();
      }
  }
  </code></pre>
  
  <p><strong>Custom Row View</strong></p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  
  &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:orientation="horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
              android:gravity="center"
          android:clickable="true"&gt;
      &lt;CheckBox android:layout_height="wrap_content"
                   android:layout_width="wrap_content"
                   android:id="@+id/isLoggedIn"
                   android:padding="4dp"
                  android:gravity="center"
              android:focusable="false"
              android:clickable="false"
              android:focusableInTouchMode="false"/&gt;
      &lt;CheckBox android:layout_height="wrap_content"
                   android:layout_width="wrap_content"
                   android:id="@+id/isCurrent"
                   android:padding="4dp"
                   android:gravity="center"
                  android:focusable="false"
                  android:clickable="false"
                  android:focusableInTouchMode="false"/&gt;
      &lt;TextView android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:id="@+id/userName"
                android:padding="4dp"
              android:gravity="left"
              android:focusable="false"
              android:clickable="false"
              android:focusableInTouchMode="false"/&gt;
      &lt;TextView android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:id="@+id/userId"
                android:padding="4dp"
              android:gravity="left"
              android:focusable="false"
              android:clickable="false"
              android:focusableInTouchMode="false"/&gt;
  &lt;/LinearLayout&gt;
  </code></pre>