2012-04-20 3 views
2

Проблемы:Update 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 обновить Drawable состояния элемента списка. Это срабатывает, когда вы нажимаете на другое TextView s в элементе, который не доступен для клика.

Спасибо!

+0

Вы пытались сделать mListView.invalidateViews()? – HelloWorld

ответ

2

Got it working.

Установите вид элемента списка clickable и установить его в качестве фона state-list Drawable, а также установить addStatesFromChildren в true. Это позволит убедиться, что состояние элемента просмотра списка изменяется при нажатии любого из его дочерних элементов (предположим, что он доступен для клика).

Однако, это приведет к ListView сам не получает фокус, так что вам нужно обработать щелчок, добавив View.OnClickListener к самому элементу списка вместо добавления OnItemClickedListener к ListView.