Eug*_*mak 8 android autocompletetextview
我想补充TextChangedListener到AutocompleteTextView.在TextChangedListener的afterTextChanged()我调用AsyncTask它加载从网络数据(活动开始时加载所有的数据是不是一种选择,因为列表可能会非常大,所以它成为只是交通的浪费).
AsyncTask的onPostExecute()看起来像这样(我用的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 希望我可以提供帮助.
我也遇到过这个问题.我的完成阈值是2.当输入2个字符时,我从服务器获取数据并填充了数组适配器但autoRailwayFrom.showDropDown();没有显示下拉...
我只是写在线,它的工作原理......
autoRailwayFrom.setText(autoRailwayFrom.getText());
adapterFrom.notifyDataSetChanged();
autoRailwayFrom.showDropDown();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7286 次 |
| 最近记录: |