2009-05-21 2 views
7

Я заполнил ListActivity с Cursor, используя SimpleCursorAdapter, который начинает другое действие, когда один из элементов списка был нажат. Я также использую ViewBinder для выполнения пользовательских преобразований данных.Пользовательский список с помощью флажков

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

Добавление CheckBox удалено, нажмите на предметы. Метод onListItemClick, который я переопределял в ListActivity, больше не вызывается при нажатии на элемент списка. Удаление CheckBox устраняет это. Почему это?

Кроме того, как я могу настроить список, чтобы он продолжал выполнять мои требуемые функции, если нажата основная часть элемента списка, но имеют дополнительные функции, когда отмечен CheckBox в элементе? Будет ли работать onCheckedChangedListener или один и тот же экземпляр просмотра, повторно используемый для каждого элемента в списке?

ответ

4

Похож, что 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 «s для андроида MENUITEM вытяжке:

android:background="@android:drawable/menuitem_background" 
+0

Привет вы можете разместить больше кода этого? – Maxrunner

14

Как пояснил here, защелкивающийся слушатель работает, только если нет другой точки зрения не является focusable. Настройка вашего CheckBox в focusable="false" должен сделать трюк:

<CheckBox android:focusable="false" /> 
Смежные вопросы