我有一個ListView
支持ArrayAdapter<String>
。內容如:ArrayAdapter <String>從一個詞的開頭只過濾匹配
- C309
- 一個309
- 一個C309
- 一個309N
如果我執行:....getFilter().filter("309")
我的適配器上的結果是:
- 那裏是在一個新的字符串的開頭相匹配,則返回309
- 甲309N
基本上只內容。只是想知道這是如預期的那樣工作,因爲我想返回所有存在子字符串匹配的字符串?
在此先感謝,彼得
我有一個ListView
支持ArrayAdapter<String>
。內容如:ArrayAdapter <String>從一個詞的開頭只過濾匹配
如果我執行:....getFilter().filter("309")
我的適配器上的結果是:
基本上只內容。只是想知道這是如預期的那樣工作,因爲我想返回所有存在子字符串匹配的字符串?
在此先感謝,彼得
是的,這是預期的行爲(據我所知)。
on line 483 of ArrayAdapter.java你發現這個: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()
方法匹配。
我使用'ArrayAdapter'返回的'Filter'來自動執行過濾器。我基本上問的問題是,這是否是過濾器的默認行爲,然後需要我執行一個自定義過濾器。 – PJL 2012-07-20 07:43:11