Пользовательский список, нажав с флажками
Я заселил ListActivity
из Cursor
с помощью SimpleCursorAdapter
это запускает другое действие, когда один из элементов списка был нажат. Я также использую ViewBinder
сделать некоторые пользовательские преобразования данных.
Я хочу добавить CheckBox
к каждой строке в списке, поэтому я изменил вид и добавил CheckBox
с гравитацией вправо.
Добавление CheckBox
убрал возможность нажимать на предметы. onListItemClick
метод, который я переопределил в ListActivity
больше не вызывается при нажатии на элемент списка. Удаление CheckBox
исправляет это. Почему это?
Кроме того, как я могу настроить список таким образом, чтобы он продолжал выполнять мои необходимые функции, если щелкнуть основную часть элемента списка, но у него есть дополнительные функции, когда CheckBox
в пункте проверено? Будет постановка onCheckedChangedListener
работать или один и тот же экземпляр представления повторно используется для каждого элемента в списке?
2 ответа
Похоже SimpleCursorAdapter
слишком примитивно для того, чего я хотел достичь. Я перешел на реализацию CursorAdapter
и возвращая новый вид, используя LayoutInflater
в моей реализации newView
метод.
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return LayoutInflater.from(context).inflate(R.layout.alarm_row, parent, false);
}
В bindView я тогда установил кастом OnClickListener
к моей главной LinearLayout
а потом еще OnCheckedChangeListener
к CheckBox
,
Чтобы все это выглядело правильно, я должен был установить LinearLayout
фон для Android меню рисовать:
android:background="@android:drawable/menuitem_background"
Как объясняется здесь, прослушиватель щелчков работает, только если нет другого представления focusable
, Настройка вашего CheckBox
в focusable="false"
должен сделать трюк:
<CheckBox android:focusable="false" />