2012-07-19 203 views
1

我有一個ListView支持ArrayAdapter<String>。內容如:ArrayAdapter <String>從一個詞的開頭只過濾匹配

  • C309
  • 一個309
  • 一個C309
  • 一個309N

如果我執行:....getFilter().filter("309")我的適配器上的結果是:

  • 那裏是在一個新的字符串的開頭相匹配,則返回309
  • 甲309N

基本上只內容。只是想知道這是如預期的那樣工作,因爲我想返回所有存在子字符串匹配的字符串?

在此先感謝,彼得

回答

2

是的,這是預期的行爲(據我所知)。
on line 483 of ArrayAdapter.java你發現這個:if (valueText.startsWith(prefixString)) {
然後,它將字符串拆分爲單詞,並對每個單詞執行startsWith()。

-1

你應該使用String方法startsWith()。這裏的Javadoc頁面吧:

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

編輯:所以在你ArrayAdapter的環境下,你只想通過每個值都循環,並檢查有與startsWith()方法匹配。

+0

我使用'ArrayAdapter'返回的'Filter'來自動執行過濾器。我基本上問的問題是,這是否是過濾器的默認行爲,然後需要我執行一個自定義過濾器。 – PJL 2012-07-20 07:43:11

相關問題