Обновление состояния элемента ListView по катры, когда ребенок нажал
Задача:
У меня есть ListView элемент с относительно сложной компоновкой. Одним из дочерних элементов в представлении элемента списка является TextView со ссылками. TextView может обрабатывать клики по ссылкам, найденным в нем(с помощью Linkify), и имеет OnClickListener, который обрабатывает клики по частям текста, которые не являются ссылками. Слушатель просто получит позицию представления в ListView и выполнит щелчок:
@Override
public void onClick(View v) {
int position = mListView.getPositionForView(v);
mListView.performItemClick(v, position, mAdapter.getItemId(position));
}
Все работает нормально, за исключением того, что щелчок не вызывает ListView для обновления элемента списка. государственного выигрышного. Это действительно срабатывает, когда вы нажимаете на другие TextViews в элементе, которые не являются кликабельными.
Спасибо!
1 ответ:
Это сработало.
Установите вид элемента списка
clickableи установите его фон в качествеstate-listрисоваемого, а также установитеaddStatesFromChildrenвtrue. Это позволит убедиться, что состояние элемента представления списка изменяется при щелчке любого из его дочерних элементов (предположим, что дочерний элемент является кликабельным).Однако это приведет к тому, что
ListViewсам не получит фокус, поэтому вам нужно обработать щелчок, добавивView.OnClickListenerк самому элементу списка вместо добавленияOnItemClickedListenerкListView.