ListView onClick event doesn't fire with Linkified email address

假装没事ソ 提交于 2019-12-03 17:07:31

问题


I have a straight forward ListView with a ListAdapter and custom onItemClick method for the list. My ListView items are clickable to perform other functions. However, some of my ListView elements contain an email address that should be clickable too.

I found Linkify, and added it to the email address textview per the docs.

After doing so, the ListView item containing such a "clickable" textview is now no longer clickable to perform the other functions.

I have tried adding the OnItemClickListener after I create the entire view, to no avail :(

Any idea's on how to have my ListView items clickable eventhough they contain a Linkified textView?


My deepest appologies for not searching further before asking the question to begin with. I have found the answer to my question, and posted it as an answer.


回答1:


Solution:

After a lot of more searching (which I already did, but not far enough apparently), I finally found this page.

Example code: My page (LinearLayout containing the listView) assigns a ListViewAdapter which creates the various ListView items, assigns itself as the OnClick listener and adds the ListView:

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

The ListViewAdapter creates each ListView item and assigns it's content, linkifying email addresses when needed:

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);
}

The solution is easy, using the code on the page I found. I created a LinkTextView class descending from TextView and added the method described on the page. After the Linkify.addLinks call above I added the statement:

textView.setMovementMethod(null);

The ListView item and linkified text are now both clickable once again.

Again, my deepest appologies for not searching further before asking the question to begin with.




回答2:


Just add android:descendantFocusability="blocksDescendants" to xml definition of list item.

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



来源:https://stackoverflow.com/questions/7515710/listview-onclick-event-doesnt-fire-with-linkified-email-address

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!