读书人

解决AutoCompleteTextView setText()后

发布时间: 2012-09-23 10:28:11 作者: rapoo

解决AutoCompleteTextView setText()后下拉框弹出的问题
(开发内容顺承上一篇博客。。。。)

我写登陆框的时候,在AutoCompleteTextView的dropdown中自定义了每个item的布局,并且在每个item显示布局的右边添加了一个删除功能的按钮(就像QQ Android的账号输入那样)。这样导致item的onSelected事件无法被捕捉到,点击dropdown的item,完全没有反应。

为解决该点击响应的问题,我为item的自定义布局添加了onClickListener来代替原来dropdown的itemSelected事件的处理方法,然后对AutoCompleteTextView控件通过setText()使之显示选择的账号。。。。

接着dropdown的框框就弹出来了(因为匹配到了字符串), 尽管我在setText()之后dismissDropDown()也是没有用的, 因为dropDown在一段延迟之后才show出来。所以当调用dismissDropDown()的时候,dropDown根本都还没有出现呢……

我的解决方法是,在setText()之后,改变Threshold的值,例如setThreshold(100),随便一个很大的值,这样因为AutoCompleteTextView中字符数没有达到Threshold的值,于是不会进行匹配,自然dropdown的框框也就不会出来了。

然后再添加一个AutoCompleteTextView的setOnTextChangedListener,在里面把Threshold改回正常的值,这样通过键盘敲入的字符输入也可以得到正常的匹配。
这个问题就解决啦~ 目前还蛮好用,没有出现什么问题。。。。 1 楼 andyjackson 2010-08-25 renaqiu 写道(开发内容顺承上一篇博客。。。。)

我写登陆框的时候,在AutoCompleteTextView的dropdown中自定义了每个item的布局,并且在每个item显示布局的右边添加了一个删除功能的按钮(就像QQ Android的账号输入那样)。这样导致item的onSelected事件无法被捕捉到,点击dropdown的item,完全没有反应。

为解决该点击响应的问题,我为item的自定义布局添加了onClickListener来代替原来dropdown的itemSelected事件的处理方法,然后对AutoCompleteTextView控件通过setText()使之显示选择的账号。。。。

接着dropdown的框框就弹出来了(因为匹配到了字符串), 尽管我在setText()之后dismissDropDown()也是没有用的, 因为dropDown在一段延迟之后才show出来。所以当调用dismissDropDown()的时候,dropDown根本都还没有出现呢……

我的解决方法是,在setText()之后,改变Threshold的值,例如setThreshold(100),随便一个很大的值,这样因为AutoCompleteTextView中字符数没有达到Threshold的值,于是不会进行匹配,自然dropdown的框框也就不会出来了。

然后再添加一个AutoCompleteTextView的setOnTextChangedListener,在里面把Threshold改回正常的值,这样通过键盘敲入的字符输入也可以得到正常的匹配。
这个问题就解决啦~ 目前还蛮好用,没有出现什么问题。。。。
我干javaeye ,想投个精华帖都不可以。莫名其妙冒得分了 2 楼 zhc0822 2010-08-25 终于看明白楼主的意思了...setThreshold(100)这个方法真够取巧的 3 楼 lenzol 2010-09-02 通过设置这个属性 就可以让AutoCompleteTextView控件的弹出框不可见.
autoTextView.setDropDownHeight(0); 4 楼 hjg1988 2011-06-29 为什么我发现AutoCompleteTextView根本没有setOnTextChangedListener方法啊?

读书人网 >移动开发

热点推荐