为EditText设置内容监听,随内容进行改变
TextWatcher watcher = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//只要编辑框内容有变化就会调用该方法,s为编辑框变化后的内容
Log.i("onTextChanged", s.toString());
searchResetData(s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//编辑框内容变化之前会调用该方法,s为编辑框内容变化之前的内容
Log.i("beforeTextChanged", s.toString());
}
@Override
public void afterTextChanged(Editable s) {
//编辑框内容变化之后会调用该方法,s为编辑框内容变化后的内容
}
};
//为EditText设置内容监听
search.addTextChangedListener(watcher);
/**
* 搜索数据
*
* @param s 搜索字符
*/
public void searchResetData(String s) {
searchData.clear();
//如果为null,直接使用全部数据
if (s.equals("")) {
searchData.addAll(lockItems);
} else {
//否则,匹配相应的数据
for (int i = 0; i < lockItems.size(); i++) {
if (lockItems.get(i).name.indexOf(s) >= 0 || lockItems.get(i).location.indexOf(s) >= 0) {//这里可拓展自己想要的,甚至可以拆分搜索汉字来匹配
searchData.add(lockItems.get(i));
}
}
}
//刷新数据
mAdapter.notifyDataSetChanged();
}
初始化list
searchData.addAll(lockItems); //设置初始结果显示为所有查询list
mAdapter=new LockListAdapter(context,searchData);
xListView.setAdapter(mAdapter);
mAdapter.notifyDataSetChanged(); //更新列表