2

我有一个ListViewArrayAdapter<String>. 内容如:

  • 309
  • C309
  • 309
  • 一辆C309
  • 一个 309N

如果我执行:....getFilter().filter("309")在我的适配器上,结果是:

  • 309
  • 309
  • 一个 309N

基本上只返回在新字符串开头匹配的内容。只是想知道这是否按预期工作,因为我想返回所有有子字符串匹配的字符串?

在此先感谢,彼得

4

2 回答 2

3

是的,这是预期的行为(据我所知)。
ArrayAdapter.java的第 483 行,您会发现:if (valueText.startsWith(prefixString)) {
然后它将字符串拆分为单词并在每个单词上执行 startsWith()。

于 2013-04-25T16:57:28.717 回答
-1

您应该使用 String 方法startsWith()。这是它的 Javadoc 页面:

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#startsWith(java.lang.String )

编辑:因此,在您的 ArrayAdapter 的上下文中,您只需遍历每个值并检查该startsWith()方法是否匹配。

于 2012-07-19T17:47:35.323 回答