Пользовательский список, нажав с флажками

Я заселил 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" />
Другие вопросы по тегам