Java android ListView过滤器-空格字符

Java android ListView过滤器-空格字符,java,android,listview,filter,adapter,Java,Android,Listview,Filter,Adapter,我想使用EditText框和适配器getFilter()函数过滤我的listView。在我在文本框中添加空格字符之前,它工作正常 编辑:它是一个SimpleAdapter而不是ArrayAdapter 如果我的列表包含以下单词:{“苹果”、“香蕉”、“红苹果”} 如果我输入“apple”,它将返回包含apple(苹果和红苹果)一词的所有项目。 如果我输入“苹果”,它不会返回任何内容 有什么想法吗?代码如下: searchBox = (EditText) findViewById(R.id.sea

我想使用
EditText
框和适配器
getFilter()
函数过滤我的
listView
。在我在文本框中添加空格字符之前,它工作正常

编辑:它是一个SimpleAdapter而不是ArrayAdapter

如果我的列表包含以下单词:{“苹果”、“香蕉”、“红苹果”} 如果我输入“apple”,它将返回包含apple(苹果和红苹果)一词的所有项目。 如果我输入“苹果”,它不会返回任何内容

有什么想法吗?代码如下:

searchBox = (EditText) findViewById(R.id.searchBox);

searchBox.addTextChangedListener(filterTextWatcher);

尝试使用以下方法:

myAdapter.getFilter().filter(s.toString().trim());

如果SimpleAdapter的过滤功能不能满足您的过滤要求,您将需要覆盖SimpleAdapter并实现您自己的过滤要求

这需要大量代码,因为
simpledapter
中的过滤器使用了大量需要复制的私有对象。
ArrayAdapter的应用程序相同

幸运的是,其他人(@uʍopǝpısdn)已经参与了这个过程,编写了代码并将其提供给社区

您可以找到is博客的链接,包括如何使用示例以及中的代码


注意。

这只起部分作用,因为它删除了空格,但假设我键入“Red Ap”,它会将其修剪为“RedAp”,并且我的选择中没有包含“RedAp”的单词。因此,如果我在一个单词之前或之后加上一个“”但没有给出我想要的结果,它基本上解决了这个问题。@Chris911:它实际上不会。修剪的意思是,它只是在文本开始和停止之前和之后分别删除空格。因此,如果您键入“apple”,它会将其修剪为“apple”,但如果您键入“red ap”,它会接受的。明白了吗?谢谢你的解释,海拉尔,但这仍然不能解决问题。我开始想唯一的办法就是用我自己的过滤器实现我自己的适配器。你有没有想过这个问题?我不后悔。我认为解决方案可能是基于ArrayAdapter制作您自己的适配器,但我还没有尝试(停止了该项目的工作)。@CaptainProg您想要什么类型的答案?使用
trim()
提出的原始问题是最好的答案。@Chris911我有一个类似的问题,我发布了一个问题,希望您能提供帮助。我认为这是唯一有效的解决方案。我问这个问题已经有一段时间了,我不再做那个项目了,但我会尝试验证。谢谢,没错。所描述的问题是由此行引起的:
String[]words=str.split(“”),该类仅从初始字符串中省略空格,将它们拆分为单词。@Luis我有一个类似的问题,我发布了一个问题,希望您能提供帮助。
myAdapter.getFilter().filter(s.toString().trim());