我在使用 AutoCompleteTextView 时遇到了一些问题,我需要在每次按键后显示建议。问题在于,建议列表是动态的,就像谷歌的建议功能一样。这意味着,新的建议应该随着用户不断输入而添加,同时还应显示所有匹配的旧建议。
例如
我写下 "te",然后它应该显示之前的建议,比如“test1”和“test2”,以及从 Web API 中获取的新建议。假设 Web API 给出单词 "tea" 和 "tension"。
现在,AutoCompleteTextView 将有 "te" 作为字符串,并显示其下方的所有四个建议。
这正是我要寻找的东西。
看起来很简单,但它显示了奇怪的行为。
我正在使用默认的 ArrayAdapter 类实例,我将它全局声明。
arrayAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,suggestions);
word.setAdapter(arrayAdapter);
是一个ArrayList。
当从WebApi获得新结果时,我只是简单地调用
arrayAdapter.notifyDataSetChanged();
刷新与此相关的数据观察器和视图(在我们的情况下是AutoCompleteListView)。
但它会关闭建议功能。
当我不使用 notifyDataSetChanged();
时,它会显示所有建议,而不管我键入了哪些字符。
我尝试了许多人建议的自定义筛选器,但没有一个对我有帮助,因为我无法使用 notifyDataSetChanged()。
我发布了一张图片以避免混淆。
我有一个疑惑,为什么 notifyDataSetChanged();
没有起作用。我没有使用同一个 ArrayAdapter 实例的其他列表引用。我真的怀疑这是否是一个引用问题。