我正在使用AutoCompleteTextView,当用户点击它时,我想显示建议,即使它没有文本 - 但setThreshold(0)工作方式完全相同setThreshold(1)- 因此用户必须输入至少1个字符才能显示建议.
问题描述:
我在AutoCompleteTextView面临一些问题,我必须在每次按键后显示建议.事情是,建议列表是动态像谷歌的建议功能.这意味着应该在用户输入时添加新建议,并且应显示所有匹配的旧建议.
例如
我写"te"然后它应该显示以前的建议,如"test1"和"test2"以及我将从Web API获得的新建议.假设web api给了我"茶"和"紧张"的字样.
现在,AutoCompleteTextView将"te"作为字符串,其下方显示所有四个建议.
这正是我要找的.
看起来很简单,但它显示出一种奇怪的行为.
我正在使用我在全局声明的默认ArrayAdapter类实例.
arrayAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,suggestions);
word.setAdapter(arrayAdapter);
Run Code Online (Sandbox Code Playgroud)
建议是ArrayList.
从WebApi获得新结果后,我只需致电
arrayAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
刷新数据观察者和附加的视图(在我们的例子中是AutoCompleteListView).
但它结束了建议.
当我不使用notifyDataSetChanged();它时,无论我输入的字符是什么,都会显示所有建议.
我尝试使用自定义过滤器,因为我不能使用notifyDataSetChanged(),但没有一个是有用的.
我发布图片以避免混淆.
我有一个混乱,为什么notifyDataSetChanged();它不起作用.我没有使用相同的arrayAdapter实例的任何其他列表引用.我真的怀疑这是一个参考问题.
android autocompletetextview notifydatasetchanged android-filterable