我有一个ListView
由ArrayAdapter<String>
. 内容如:
- 309
- C309
- 309
- 一辆C309
- 一个 309N
如果我执行:....getFilter().filter("309")
在我的适配器上,结果是:
- 309
- 309
- 一个 309N
基本上只返回在新字符串开头匹配的内容。只是想知道这是否按预期工作,因为我想返回所有有子字符串匹配的字符串?
在此先感谢,彼得
我有一个ListView
由ArrayAdapter<String>
. 内容如:
如果我执行:....getFilter().filter("309")
在我的适配器上,结果是:
基本上只返回在新字符串开头匹配的内容。只是想知道这是否按预期工作,因为我想返回所有有子字符串匹配的字符串?
在此先感谢,彼得
是的,这是预期的行为(据我所知)。
在ArrayAdapter.java的第 483 行,您会发现:if (valueText.startsWith(prefixString)) {
然后它将字符串拆分为单词并在每个单词上执行 startsWith()。
您应该使用 String 方法startsWith()
。这是它的 Javadoc 页面:
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#startsWith(java.lang.String )
编辑:因此,在您的 ArrayAdapter 的上下文中,您只需遍历每个值并检查该startsWith()
方法是否匹配。