接着上一篇博客,username能够从下拉列表中选择要登录的账号,同时也能删除对应的账号。
出现的问题是:嵌入自定义的item布局之后(自定义的Adapter中的getView方法中实现),发现item的选择事件捕捉不到了,点击dropdown的item之后完全没有响应。
我经过试验后推测导致问题的原因是这样的:在item中嵌入自定义的布局后,item自身作为父容器,就不会截获touch事件,反而传给里面的布局(包括button)来实现。
如果重写该自定义的布局的onTouch方法,使之返回false,那么ItemSelected的事件就会被捕捉到了,不过另一方面,button的click事件就捕捉不到了。(具体关于父子控件之间,touch事件是如何传递的,网上说明的文章很多)
为了解决这个问题,我为整个自定义布局(例如最外)添加了onClickListener,如果点击了就将item中值赋到AutoCompleteTextView中,button的click事件也能成功另外捕获。
好的,上一下效果图:
[img]http://dl.iteye.com/upload/attachment/293006/c06b62ec-ba76-3737-94f3-241e015b8ec5.png[/img]
选择item之后:
[img]http://dl.iteye.com/upload/attachment/293008/3feb6801-a0be-3edf-9bd9-11a7c61440b5.jpg[/img]
点击删除按钮:
[img]http://dl.iteye.com/upload/attachment/293010/5e8dcc4d-e03c-3ebc-9947-0213483bbcf6.jpg[/img]
删除之后:
[img]http://dl.iteye.com/upload/attachment/293012/085323d9-08c6-3b2c-9b4b-1780201360d0.png[/img]
出现的问题是:嵌入自定义的item布局之后(自定义的Adapter中的getView方法中实现),发现item的选择事件捕捉不到了,点击dropdown的item之后完全没有响应。
我经过试验后推测导致问题的原因是这样的:在item中嵌入自定义的布局后,item自身作为父容器,就不会截获touch事件,反而传给里面的布局(包括button)来实现。
如果重写该自定义的布局的onTouch方法,使之返回false,那么ItemSelected的事件就会被捕捉到了,不过另一方面,button的click事件就捕捉不到了。(具体关于父子控件之间,touch事件是如何传递的,网上说明的文章很多)
为了解决这个问题,我为整个自定义布局(例如最外)添加了onClickListener,如果点击了就将item中值赋到AutoCompleteTextView中,button的click事件也能成功另外捕获。
好的,上一下效果图:
[img]http://dl.iteye.com/upload/attachment/293006/c06b62ec-ba76-3737-94f3-241e015b8ec5.png[/img]
选择item之后:
[img]http://dl.iteye.com/upload/attachment/293008/3feb6801-a0be-3edf-9bd9-11a7c61440b5.jpg[/img]
点击删除按钮:
[img]http://dl.iteye.com/upload/attachment/293010/5e8dcc4d-e03c-3ebc-9947-0213483bbcf6.jpg[/img]
删除之后:
[img]http://dl.iteye.com/upload/attachment/293012/085323d9-08c6-3b2c-9b4b-1780201360d0.png[/img]