【问题标题】:AutoCompleteTextView results empty on spaceAutoCompleteTextView 结果在空间上为空
【发布时间】:2012-10-13 04:13:08
【问题描述】:

我有一个 AutoCompleteTextView,它工作得很好,直到我在我的输入中添加一个空格。例如,如果我有许多历史事件的列表(不列颠之战(1940 年)、突出部之战(1944 年)、[插入许多战斗]、拿破仑的致命行军(1812 年)、[插入许多其他历史事件]) .

当我输入“Battle”或“battle”时,我会得到一个所有战斗的列表(虽然似乎有一个最大值),当我输入“britain”时,“Battle of British (1940)”出现在结果。但是,当我在“战斗”之后输入一个空格时,所有结果条目都会消失。

除了this,我真的找不到任何关于这个主题的有用帖子或问题,但这并没有给我任何答案。

有没有办法让 AutoCompleteTextView 在插入空格后保持自动完成?

编辑:我真的不明白添加代码的意义,因为它只是一个带有字符串适配器的 AutoCompleteTextView,但是好吧,这发生在onCreate()

auto = (AutoCompleteTextView) findViewById(R.id.auto);
String[] events = getListOfEvents();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, events);
auto.setAdapter(adapter);

其中getListOfEvents() 只是读取一个将所有历史事件放在String[]

【问题讨论】:

  • 也许你可以分享一些代码?
  • 我真的不明白这一点,但看看补充。我的问题只是 AutoCompleteTextView 的(默认?)行为。

标签: java android autocomplete autocompletetextview


【解决方案1】:

插入该空格字符时自动完成中断,因为在引擎盖下它使用了AutoCompleteTextView(在您的情况下为ArrayAdapter)上设置的适配器中的过滤器。默认ArrayAdapter 的过滤器使用空格作为分隔符,将每个适配器行的文本分成单词,然后针对过滤器输入进行测试。这不会提供任何结果,因为输入过滤器(其中有一个空格)将不匹配该行中的任何单词(因为这些单词末尾没有空格)。例如,行 "Battle of British" 将不匹配 "Battle ",因为 "Battle " 不会匹配任何单词 “Battle”“of”“Britain” 是在“ ”之后拆分初始文本而产生的。

如果你想让它工作,你必须实现你自己的Adapter,它将返回一个Filter,考虑到单词后的空格。

【讨论】:

  • 谢谢,我会调查一下,可能在晚上。如果它有效,我会检查。
  • @ChristiaandeJong 您是否设法实现了过滤器?检查这个问题stackoverflow.com/questions/12911915/…
  • 我还没有修复它。我会在周末尝试一下,因为有一些代码(不是那么多),但很少有人解释实际发生的情况。每个人都告诉“制作我自己的 getFilter() 实现”。但我必须弄清楚如何。
猜你喜欢
  • 1970-01-01
  • 2016-08-25
  • 2019-02-09
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
相关资源
最近更新 更多