单击子项时更新ListView项的可绘制状态

时间:2012-04-20 22:18:45

标签: android listview linkify

问题:

我有一个ListView项,布局相对复杂。列表项视图中的一个子项是带有链接的TextViewTextView可以处理其中找到的链接的点击次数(使用Linkify),并且OnClickListener可以处理单击非链接文本的部分。听众将在ListView中获取视图的位置并执行单击:

@Override
public void onClick(View v) {
    int position = mListView.getPositionForView(v);
    mListView.performItemClick(v, position, mAdapter.getItemId(position));
}

一切正常,但点击不会触发ListView更新列表项的可绘制状态。当您单击项目中不可点击的其他TextView时,它会触发它。

谢谢!

1 个答案:

答案 0 :(得分:2)

搞定了。

设置列表项视图clickable并将其背景设置为state-list drawable,同时将addStatesFromChildren设置为true。这样可以确保在单击任何子项时更改列表视图项的状态(假设该子项是可单击的)。

但是,这会导致ListView本身无法获得焦点,因此您需要通过向列表项本身添加View.OnClickListener来处理点击,而不是向OnItemClickedListener添加ListView {1}}。