SearchView 看名字也能知道是干什么用的,主要是处理用户的输入。
效果
g
该类的方法
//OnQueryTextListener 输入文本监听 复写方法 boolean onQueryTextSubmit(String query);和boolean onQueryTextChange(String newText); //boolean onQueryTextSubmit(String query) 当用户提交查询时调用 参数是提交查询的文本 返回结果为true,表示监听器处理查询结果,false执行SearchView默认动作 //boolean onQueryTextChange(String newText);当输入框的查询文本改变时调用 参数用户输入的新文本,返回false执行默认动作,true监听器处理查询结果 //OnCloseListener查询输入框关闭监听 复写方法 onClose() 返回true清除查询字段 取消 //OnSuggestionListener 复写 boolean onSuggestionSelect(int position);和boolean onSuggestionClick(int position);方法 //boolean onSuggestionSelect(int position);当下拉列表被选中添加到导航时调用,参数是下拉列表的索引 //boolean onSuggestionClick(int position);当点击一个选项时调用,点击列表的索引 //public void setInputType(int inputType)设置输入类型 // public CharSequence getQuery()返回查询的文本 //public void setQuery(CharSequence query, boolean submit) 设置查询文本,参数1:文本,参数2:是否提交 //public void setQueryHint(@Nullable CharSequence hint) 设置查询提示文本 // public CharSequence getQueryHint() 获取查询文本提示 // public void setIconifiedByDefault(boolean iconified)、、设置搜索图标是否显示 //public boolean isIconfiedByDefault() //public void setSubmitButtonEnabled(boolean enabled) 设置正在输入的时候显示提交按钮 //public boolean isSubmitButtonEnabled() //public void setSuggestionsAdapter(CursorAdapter adapter)数据列表适配器
xml中使用
<android.support.v7.widget.SearchView android:id="@+id/searchview" android:background="@drawable/bg_shape_hot_tv" android:layout_centerHorizontal="true" android:layout_width="match_parent" android:layout_height="35dp"/>
上面的方法大部分都可以在xml文件中设置
android:maxWidth="300dp"android:queryHint="你好"
mSearchView = (SearchView) findViewById(R.id.searchview); // searchView.setInputType(InputType.TYPE_CLASS_NUMBER);//设置输入类型 // searchView.setQuery("查询文本",false);//设置查询文本 是否提交 mSearchView.setQueryHint("查询数据库电话字段");//设置查询提示文本 //searchView.setIconifiedByDefault(false);//设置搜索图标是否显示 mSearchView.setSubmitButtonEnabled(true);//设置显示提交按钮 //输入文本监听 mSearchView.setOnQueryTextListener(this); //adapter.changeCursor(cursor)相当于adapter.notifyDataSetChanged()方法 //查询数据库得到Cursor SQLiteDatabase db = mSqlitopen.getReadableDatabase(); final Cursor cursor = db.query("demo", null, null, null, null, null, null); mAdapter = new MyAdapter(this,cursor,1); mSearchView.setSuggestionsAdapter(mAdapter);//设置数据适配器 //下拉列表选择监听 mSearchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() { //当列表被选择兵添加到搜索框中调用 @Override public boolean onSuggestionSelect(int position) { Toast.makeText(MainActivity.this,"选择的列表是位置"+position,Toast.LENGTH_LONG).show(); return true; } //点击一个选项时调用 @Override public boolean onSuggestionClick(int position) { Toast.makeText(MainActivity.this,"点击列表是位置"+position,Toast.LENGTH_LONG).show(); mSearchView.setQuery(mAdapter.getQueryText(),true); return true; } }); } //提价查询的时候调用 @Override public boolean onQueryTextSubmit(String query) { Log.d(TAG, "onQueryTextSubmit: "+query); return true;//返回true自己处理查询的文本 } //当输入框查询的文本改变是调用 @Override public boolean onQueryTextChange(String newText) { Log.d(TAG, "onQueryTextChange: "+newText); return false;//false执行默认的动作 }