gpt4 book ai didi

android - 具有异步建议的 AutocompleteTextView 不显示下拉列表

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:49:31 26 4
gpt4 key购买 nike

我将 TextChangedListener 添加到 AutocompleteTextView。在 TextChangedListenerafterTextChanged() 中,我调用了 AsyncTask 从网络加载数据(当 Activity 开始时加载所有数据不是一个选项,因为列表可能非常大,所以它只是浪费流量)。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();
}
}

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

我的问题:

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

最佳答案

我正在做完全相同的事情,我只是实现了这个功能。与其清除适配器并单独构建它,不如如下设置适配器(我在 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();

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

你也可以调用

adapter.setNotifyOnChange(true)

这样就没必要调用

adapter.notifyDatasetChanged()

参见 setNotifyOnChange希望我能帮上忙。

关于android - 具有异步建议的 AutocompleteTextView 不显示下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10786702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com