Вопрос

Я заполнил 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" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top