Задний план
когда вы создаете свои собственные пользовательские представления для listView, вы можете иметь флажок (или любое другое представление, которое имеет «state_pressed» для его рисования) внутри, которое будет отображаться только как затронутое только тогда, когда оно действительно нажато, вместо нажатия в любом месте строки listView.
Способ сделать это для listView - просто использовать следующий код на его адаптере (как показано здесь а>):
public boolean isEnabled(int position)
{
return false;
}
Эта проблема
это решение не работает для ExpandableListView, так как у него нет этой функции.
Не только это, но я думаю, что любой щелчок по элементам в ExpandableListView (даже тем, которые не расширяются) вызовет notifyDataSetChanged (или макет, который его запускает).
Почему это происходит?
Что я пробовал
Я пытался использовать " isChildSelectable", " areAllItemsEnabled", "setClickable" и даже "duplicateParentState" . Ни одно из этих решений не помогло.
Вопрос
Каков наилучший способ установить флажок в строках и разрешить только им обрабатывать эффекты касания на себе?
Кроме того, почему щелчок по элементам (даже без дочерних элементов) вызывает обновление всего ExpandableListView?