ListView的onClick事件无法触发Linkified电子邮件地址

11

我有一个基础的ListView,带有ListAdapter和自定义的onItemClick方法,用于列表。

我的ListView项目可点击以执行其他功能。然而,我的一些ListView元素包含应该可点击的电子邮件地址。

我发现Linkify,并根据文档将其添加到电子邮件地址TextView中。

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

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

如何让我的ListView项目是可点击的,即使它们包含Linkified的textView?


抱歉,在提问之前没有进一步搜索。我找到了答案,并将其作为答案发布了。


请添加一些代码,以便我们可以对此有一些了解。 - Lalit Poptani
你尝试过在行布局中使用 android:descendantFocusability 吗? - pawelzieba
@dziobas:我不确定该把它放在哪里。我的代码/布局比我向您展示的示例稍微复杂一些。不过,示例代码也会给我带来同样的问题。 - djBo
2个回答

22

解决方案:

经过更多的搜索(我之前已经搜索了不少,但显然还不够),我终于找到了这个页面

示例代码: 我的页面(包含ListView的LinearLayout)分配了一个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的项和链接化文本现在再次可点击。
  • 再一次,我由衷地为在提问之前没有进行更深入的搜索而道歉。

  • 1

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接