Добавление CheckBox к представлению строк ListView делает строку не интерактивной

Я пытаюсь создать ListView похожий на приложение Gmail, где каждая строка имеет CheckBox слева, чтобы облегчить множественный выбор и действия через контекстную панель действий, и в то же время разрешить щелчку каждой строки для перехода к другому действию.

Первоначально, перед добавлением CheckBox строки указывали бы их выделение с голубым цветом фона из темы Holo, которую я использую, и вызывать onListItemClick в моем ListFragment при нажатии и onItemLongClick в моем OnItemLongClickListener при длительном нажатии.

Когда я добавляю CheckBox в мой XML-файл макета для представления строки, фон больше не меняет цвет, и я больше не получаю события щелчка или длинного клика. Если я добавлю android:longClickable="true" в верхнюю ViewGroup в моем представлении .xml, то я снова начну получать события с длинными ViewGroup . Но android:clickable="true" не вызывает события click. И ни одна из них не позволяет возвращать индикацию выбора фона. Только сам CheckBox предоставляет визуальную индикацию касания с синим фоном при касании.

Что мне нужно сделать, чтобы получить стандартную визуальную индикацию выбора, а также щелкнуть события в строках ListView с помощью CheckBox в представлении?

Вот соответствующая часть моего представления .xml:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:longClickable="true" android:orientation="horizontal" > <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:paddingBottom="5dp" android:paddingRight="12dp" android:paddingTop="5dp" > ... </LinearLayout> </LinearLayout> 

Я написал сообщение в блоге по этому вопросу некоторое время назад, что вы можете счесть полезным. На самом деле проблема состоит в том, что добавление настраиваемых элементов (например, CheckBox или Button ) отключает возможность щелчка по всему элементу списка, и их фокусность должна быть отключена. Вы также не должны добавлять какие-либо clickable флаги в основной макет.

Добавляя флажок в CAB, пожалуйста, сделайте его focusable = "false", это решит проблему только одного времени, называемого onItemCheckedStateChanged.