Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Custom list clicking with checkboxes

I've populated a ListActivity from a Cursor using SimpleCursorAdapter that starts another activity when one of the list items have been clicked. I'm also using ViewBinder to do some custom transformation of the data.

I want to add a CheckBox to each row in the list so I've changed the view and added a CheckBox with gravity right.

Adding the CheckBox has removed the ability to click on the items. The onListItemClick method I was overriding in ListActivity is no longer called when you press on a list item. Removing the CheckBox fixes this. Why is this?

Also, how can I set up the list so that it continues to perform my required functionality if the main part of the list item is clicked but have additional functionality when the CheckBox in the item is checked? Will setting a onCheckedChangedListener work or is the same view instance reused for each item in the list?

like image 836
Tom Martin Avatar asked May 21 '09 21:05

Tom Martin


2 Answers

As explained here, the click listener only works if no other view is focusable. Setting your CheckBox to focusable="false" should do the trick:

<CheckBox android:focusable="false" />
like image 82
Josef Pfleger Avatar answered Oct 11 '22 19:10

Josef Pfleger


Looks like SimpleCursorAdapter is too primitive for what I wanted to achieve. I've switched to implementing CursorAdapter and returning a new view using the LayoutInflater in my implementation of the newView method.

  public View newView(Context context, Cursor cursor, ViewGroup parent) {
    return LayoutInflater.from(context).inflate(R.layout.alarm_row, parent, false);
  }

In bindView I then set a custom OnClickListener to my main LinearLayout and then another OnCheckedChangeListener to the CheckBox.

For all this to look right I had to set the LinearLayout's background to android's menuitem drawable:

android:background="@android:drawable/menuitem_background"
like image 37
Tom Martin Avatar answered Oct 11 '22 18:10

Tom Martin