2

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

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

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

有没有办法让 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);

wheregetListOfEvents()简单地读取一个将所有历史事件放在一个String[]

4

1 回答 1

4

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

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

于 2012-10-23T12:37:44.203 回答