ListView onClick事件不会使用链接的电子邮件地址触发

djB*_*jBo 11 android listview linkify

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

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

执行此操作后,包含此类"可单击"文本视图的ListView项目现在不再可单击以执行其他功能.

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

有什么想法如何让我的ListView项目可点击,尽管它们包含一个Linkified textView?


我最深切的抱歉是在开始提问之前不再进一步搜索.我找到了问题的答案,并将其作为答案发布.

djB*_*jBo 22

解:

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

示例代码:我的页面(包含listView的LinearLayout)分配一个ListViewAdapter,它创建各种ListView项,将自己指定为OnClick侦听器并添加ListView:

list.setAdapter(adapter);
list.setOnItemClickListener(this);
addView(list);
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

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

textView.setMovementMethod(null);
Run Code Online (Sandbox Code Playgroud)

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

再一次,我最深刻的批评是在开始提问之前不再进一步搜索.