11

我有一个直截了当的 ListView,其中包含 ListAdapter 和用于列表的自定义 onItemClick 方法。我的 ListView 项目可单击以执行其他功能。但是,我的一些 ListView 元素包含一个电子邮件地址,它也应该是可点击的。

我找到了 Linkify,并根据文档将其添加到电子邮件地址 textview 中。

这样做之后,包含这种“可点击”文本视图的 ListView 项目现在不再可点击以执行其他功能。

在创建整个视图后,我尝试添加 OnItemClickListener,但无济于事:(

关于如何让我的 ListView 项目可点击的任何想法,即使它们包含 Linkified textView?


我最深切的歉意,在提出问题之前没有进一步搜索。我找到了我的问题的答案,并将其作为答案发布。

4

2 回答 2

22

解决方案:

经过大量搜索(我已经这样做了,但显然还不够),我终于找到了这个页面

示例代码:我的页面(包含 listView 的线性布局)分配了一个 ListViewAdapter,它创建各种 ListView 项,将自身分配为 OnClick 侦听器并添加 ListView:

list.setAdapter(adapter);
list.setOnItemClickListener(this);
addView(list);

ListViewAdapter 创建每个 ListView 项目并分配其内容,并在需要时链接电子邮件地址:

public View getView(int position, View convertView, ViewGroup parent) {
    View view = layoutInflater.inflate(R.layout.list_item_layout, null);
    TextView textView = (TextView) view.findViewById(R.id.item_text);
    textView.setText(<some email address>);
    Linkify.addLinks(textView, Linkify.EMAIL_ADDRESSES);
}

使用我找到的页面上的代码,解决方案很简单。我从 TextView 创建了一个 LinkTextView 类,并添加了页面上描述的方法。在上面的 Linkify.addLinks 调用之后,我添加了以下语句:

textView.setMovementMethod(null);

ListView 项目和链接文本现在都可以再次单击。

再次,我最深切的歉意,在提出问题之前没有进一步搜索。

于 2011-09-23T07:10:27.613 回答
1

只需将 android:descendantFocusability="blocksDescendants" 添加到列表项的 xml 定义中。

资料来源:http ://www.thekeyconsultant.com/2013/06/android-quick-tip-linkify-and-listviews.html?m=1

于 2015-09-02T13:49:20.223 回答