Обновление состояния элемента 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
для обновления элемента списка. государственного выигрышного. Это действительно срабатывает, когда вы нажимаете на другие TextView
s в элементе, которые не являются кликабельными.
Спасибо!
1 ответ:
Это сработало.
Установите вид элемента списка
clickable
и установите его фон в качествеstate-list
рисоваемого, а также установитеaddStatesFromChildren
вtrue
. Это позволит убедиться, что состояние элемента представления списка изменяется при щелчке любого из его дочерних элементов (предположим, что дочерний элемент является кликабельным).Однако это приведет к тому, что
ListView
сам не получит фокус, поэтому вам нужно обработать щелчок, добавивView.OnClickListener
к самому элементу списка вместо добавленияOnItemClickedListener
кListView
.