使用listview作为搜索提示显示容器,这里需要几个东西
1:searchview文字改变事件时后台查询然后填充到listview并显示出来
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchItem.getActionView();
searchView.setOnQueryTextListener(new OnQueryTextListener () //搜索时会触发这个事件搜索即可
{
public boolean onQueryTextSubmit(String query) {
// TODO Auto-generated method stub
return false;
}
public boolean onQueryTextChange(String newText) {
if(newText!="")
{
listView.setVisibility(0);
Object[] names = new Object[]{newText,"cz0","aj","xd","jl","mm"};
listView.setAdapter(new ArrayAdapter<Object>(getActivity().getApplicationContext(),
android.R.layout.simple_expandable_list_item_1, names));
}
return false;
}
});
2:当listview触摸时隐藏掉输入键盘,不然控件会很少
listView.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
((InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).
hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
return false;
}
});
3:当searchview搜索完毕时隐藏掉listview
searchItem.setOnActionExpandListener(new android.view.MenuItem.OnActionExpandListener() {
public boolean onMenuItemActionExpand(MenuItem item) {
// TODO Auto-generated method stub
return true;
}
public boolean onMenuItemActionCollapse(MenuItem item) {
// TODO Auto-generated method stub
listView.setVisibility(8);
return true;
}
});