Настраиваемый список с флажками
-
23-08-2019 - |
Вопрос
Я заполнил 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);
}
Затем вbinView я установил собственный OnClickListener
к моему основному LinearLayout
а потом еще один OnCheckedChangeListener
к CheckBox
.
Чтобы все это выглядело правильно, мне пришлось установить LinearLayout
фон для рисуемого пункта меню Android:
android:background="@android:drawable/menuitem_background"
Другие советы
Как объяснено здесь, прослушиватель кликов работает только в том случае, если нет другого представления focusable
.Настройка вашего CheckBox
к focusable="false"
должен сделать трюк:
<CheckBox android:focusable="false" />