空间上的AutoCompleteTextView结果为空

时间:2012-10-23 09:03:12

标签: java android autocomplete autocompletetextview

我有一个AutoCompleteTextView,它可以很好地工作,直到我为我的输入添加一个空格。如果我有一个许多历史事件的列表(英国战役(1940年),凸起之战(1944年),[插入大量战斗],拿破仑的致命游行(1812年),[插入许多其他历史事件])

当我进入“战斗”或“战斗”时,我会得到所有战斗的清单(虽然看起来有最大值),当我进入“英国”时,“英国战役(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[]

1 个答案:

答案 0 :(得分:4)

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

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