【问题标题】:Android - AutoCompleteTextView not showing after setText is calledAndroid - 调用 setText 后 AutoCompleteTextView 不显示
【发布时间】:2015-01-28 04:18:35
【问题描述】:

AutoCompleteTextView 有一个奇怪的问题。

我有一个AutoCompleteTextView,在输入时会显示城市建议。 通过JSON 从远程服务器检索城市列表。当我使用软键盘或软键盘上的Mic 按钮时,建议工作正常。 AutoCompleteTextView 确实显示了建议的城市。

但是,当我尝试使用 myAutoCompleteTextView.setText("Chi") 设置文本时遇到问题,自动完成不显示.. 我也试过myAutoCompleteTextView.append("Chi"),但还是没有运气..

适配器在那里,只是建议没有显示。

有什么建议吗?

谢谢。

【问题讨论】:

  • 你尝试过什么?
  • 您没有为您的 AutoCompleteTextView 使用适配器吗?显示一些代码。

标签: android autocompletetextview


【解决方案1】:

是的,你是对的,AutocompleteTextview 中存在一个错误,使用setText(""); 方法显示默认建议。

但是您可以通过添加更多代码行来实现这一点,如下所示。

autoText.postDelayed(new Runnable() {
            @Override
            public void run() {
                autoText.showDropDown();
            }
        },500);
        autoText.setText("chi");
        autoText.setSelection(autoText.getText().length());

【讨论】:

    【解决方案2】:

    这是由于过滤, 不需要任何额外的代码来管理它,我发现它非常简单且有效。

    Google Dev. Reference link

    autoText.setText("Default Value here",false)
    autoText.setSelection(autoText.text.count()) // kotlin
    

    根据文档的第二个参数,您可以传递过滤。

    布尔值:如果为 false,则此调用不会执行任何过滤。

    【讨论】:

    • 实际上我这样做了,但是当设置了默认值时,它仍然只显示该项目,而不显示其余项目。当 setText() 函数的第二个参数设置为 false 时,列表中的所有项目都应该显示,但事实并非如此。
    • 这个选项非常适合我,因为我遇到了同样的问题。谢谢!
    【解决方案3】:

    Biraj Zalavadia 的答案有效,但您必须在 Runnable 中写入“settext”。 像这样:

     mACTextViewEmail.postDelayed(new Runnable() {
                @Override
                public void run() {
                    mACTextViewEmail.showDropDown();    
                    mACTextViewEmail.setText("My text is here");
                    mACTextViewEmail.setSelection(mACTextViewEmail.getText().length());
                }
            },500);
    

    【讨论】:

      【解决方案4】:

      我搜索了一下,发现这个解决方案效果很好 Look at this issue

      fun AutoCompleteTextView.showDropdown(adapter: ArrayAdapter<String>?) {
        if(!TextUtils.isEmpty(this.text.toString())){
            adapter?.filter?.filter(null)
        }
      }
      

      在kotlin语言中,你可以使用这个扩展函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        • 2011-11-08
        相关资源
        最近更新 更多