最近发现自己写的一个小程序有个问题,在listview列表的查找时,明显已经存在的,却查找不出来。例如 源字符串是“FDEFDG”,如果我查找FDE 就可以找到,查找DE 就匹配不出来,下面是我实现的方法
mEditSearch.addTextChangedListener(new TextWatcher(){
public void onTextChanged(CharSequence c, int start, int before, int count){
//在适配器是用内部方法getfilter()筛选数据
if (c != null && (c.toString()).trim().length() != 0&&adapter!=null){
adapter.getFilter().filter(c);
//完成实时刷新listview
adapter.notifyDataSetChanged();
}
}
其中getFilter()是android提供的查找类,其中的performFiltering()和publishResults()两个方法主要用于查找的实现和结果返回。 performFiltering()是执行过滤的方法,publishResults()是得到过滤结果的方法。
仔细看了下jdk源码,publishResults()用的是startwith()方法查找,该方法用于检测字符串是否以指定的前缀开始。下面是使用示例
public class Test {
public static void main(String args[]