带有异步建议的AutocompleteTextView不会显示下拉列表

Eug*_*mak 8 android autocompletetextview

我想补充TextChangedListenerAutocompleteTextView.在TextChangedListenerafterTextChanged()我调用AsyncTask它加载从网络数据(活动开始时加载所有的数据是不是一种选择,因为列表可能会非常大,所以它成为只是交通的浪费). AsyncTaskonPostExecute()看起来像这样(我用的ArrayAdapter):

    @Override
    protected void onPostExecute(ArrayList<Subregion> result)
    {
        super.onPostExecute(result);
        if (result != null)
        {
            adapter.clear();
            for (Iterator<Subregion> iterator = result.iterator(); iterator.hasNext();)
            {
                Subregion subregion = iterator.next();
                adapter.add(subregion);
            }
            adapter.notifyDataSetChanged();
            autocompleteTextView.showDropDown();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Subregion是我的自定义对象与覆盖toString().我希望我的程序在用户开始输入时开始加载数据,并在收到和解析它们时立即显示结果.

我的问题:

autocompleteTextView.showDropDown()没有效果.onPostExecute()收到正确的数据列表,它们被添加到适配器,但showDropDown()不显示下拉列表.怎么了?

Awe*_*emo 19

我正在做同样的事情,我刚刚实现了这个功能.不是清除适配器并单独构建它,而是将适配器设置如下(我在onPostExecute中调用的函数中执行此操作);

//suggestions is a string array of suggestions.
suggestAdapter = new ArrayAdapter<String>(this, R.layout.suggestions, suggestions);
//The autocomplete view 
suggestions.setAdapter(this.suggestAdapter);
suggestAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)

您不需要显式调用showdropdown,当适配器通知它数据已更改时,自动完成视图会自动更新.

你也可以打电话

adapter.setNotifyOnChange(true)
Run Code Online (Sandbox Code Playgroud)

这使得无需打电话

adapter.notifyDatasetChanged()
Run Code Online (Sandbox Code Playgroud)

请参阅setNotifyOnChange 希望我可以提供帮助.


Bha*_*ara 6

我也遇到过这个问题.我的完成阈值是2.当输入2个字符时,我从服务器获取数据并填充了数组适配器但autoRailwayFrom.showDropDown();没有显示下拉...

我只是写在线,它的工作原理......

autoRailwayFrom.setText(autoRailwayFrom.getText());
adapterFrom.notifyDataSetChanged();
autoRailwayFrom.showDropDown();
Run Code Online (Sandbox Code Playgroud)