搜索框组件SearchView常与Listview配合使用,实现搜索提示,使用方法和解释见代码,功能效果如下:
界面代码:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<SearchView
android:id="@+id/searchView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout></span>
Activity代码如下:
public class SearchViewActivity extends Activity{
private SearchView sv;
private ListView lv;
private final String str[] = {"aa","bb","ccc","dddd"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.searchview);
sv = (SearchView) findViewById(R.id.searchView);
lv = (ListView) findViewById(R.id.listView);
// 给ListView填充内容
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,str));
// lv启用过滤功能
lv.setTextFilterEnabled(true);
// 设置该SearchView是否默认缩小图标
sv.setIconifiedByDefault(false);
// 设置该searchView是否显示搜索按钮
sv.setSubmitButtonEnabled(true);
// 设置搜索提示内容
sv.setQueryHint("查找");
// 设置searchView组件的监听器
sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
// 搜索按钮点击触发的方法
public boolean onQueryTextSubmit(String query) {
Toast.makeText(SearchViewActivity.this, "选择了--:"+query, Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if(TextUtils.isEmpty(newText)){
// 若输入内容为空,关闭lv的过滤功能
lv.clearTextFilter();
}else{
// lv对输入的内容进行过滤
lv.setFilterText(newText);
}
return false;
}
});
}
}