灵活运用SearchView搜索框控件(二)
来源:互联网 发布:ubuntu u盘版本 编辑:程序博客网 时间:2024/05/29 19:45
实现自动完成。上代码。布局文件,在ToolBar下面加一个ListView。
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.devin.searchviewdemo.MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar_top" android:layout_width="match_parent" android:background="#d36302" android:layout_height="?actionBarSize"> </android.support.v7.widget.Toolbar> <ListView android:id="@+id/list_container" android:layout_width="match_parent" android:layout_below="@+id/toolbar_top" android:layout_height="match_parent"/></RelativeLayout>
Activity代码中,设置ListView 的setTextFilterEnabled属性为true,在onQueryTextChange方法中设置setFilterText过滤器。
public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener { private static final String TAG = "SearchView"; private SearchView searchView; private Toolbar mToolBar; private ListView mListView; private ArrayAdapter<String> adapter; private Menu menu; private String[] citys={"hanzhong","hangzhou","hankou","tianjin","tianshui","nanjing","nanning"}; private List<String> dataList; //SearchView中的编辑框,这个编辑框是个android.support.v7.widget.SearchView$SearchAutoComplete private SearchView.SearchAutoComplete searchText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } /** * 初始化 */ private void initView() { mToolBar = (Toolbar) findViewById(R.id.toolbar_top); setSupportActionBar(mToolBar); mListView = (ListView) findViewById(R.id.list_container); dataList=new ArrayList<>(); getData(); } private void getData() { for(String str:citys) { dataList.add(str); } adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,citys); mListView.setAdapter(adapter); mListView.setTextFilterEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_option_menu, menu); //取到menu对象,一边在其他地方调用 this.menu = menu; MenuItem item = menu.findItem(R.id.main_menu_item_search);//获得菜单对象 searchView = new SearchView(this);//添加搜索控件 item.setActionView(searchView);//将SearchView控件添加到该菜单项中 //searchView.setIconified(false);//设置默认展开 //searchView.setQueryHint("搜索关键字");//设置搜索关键字提示 searchView.setOnQueryTextListener(this);//设置搜索监听 //因为我们添加了一个自定义的提交按钮,所以将默认的按钮设为无效 //searchView.setSubmitButtonEnabled(true);//设置提交按钮是否有效 //搜索栏关闭事件 searchView.setOnCloseListener(new SearchView.OnCloseListener() { @Override public boolean onClose() { Log.i(TAG, "关闭"); return false; } }); //获取搜索框文本控件 searchText = (SearchView.SearchAutoComplete) searchView.findViewById(R.id.search_src_text); return true; } /** * 点击提交 * * @param query * @return */ @Override public boolean onQueryTextSubmit(String query) { //有了自定义提交按钮就不用这里了 Log.i(TAG, "submit:" + query); return false; } /** * 文本变化 * * @param newText * @return */ @Override public boolean onQueryTextChange(String newText) { MenuItem btnItem = menu.findItem(R.id.main_menu_item_btn_search); //监控文本变化,如果为空就隐藏自定义的按钮,否则就显示 if (newText.isEmpty()) { btnItem.setVisible(false); //清除过滤器 mListView.clearTextFilter(); } else { btnItem.setVisible(true); } //设置过滤器文本 mListView.setFilterText(newText); return true; } /** * 菜单项选择监听 * * @param item * @return */ @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.main_menu_item_btn_search: //自定义的搜索提交按钮 Toast.makeText(MainActivity.this, searchText.getText().toString(), Toast.LENGTH_SHORT).show(); break; default: break; } return true; }}
设想:如果过滤过程中能够使关键文本高亮显示就好了。初步想法自定义一个item布局,放两个textView,根据搜索关键字将符合条件的列表项字符串拆分显示。
0 0
- 灵活运用SearchView搜索框控件(二)
- 灵活运用SearchView搜索框控件(一)
- 自定义搜索框(SearchView)
- 搜索控件SearchView的用法
- 搜索控件SearchView的用法
- 仿IOS搜索控件SearchView
- Android自定义View——自定义搜索框(SearchView) 非常实用的控件
- 【转】自定义搜索框(SearchView)
- 安卓自定义搜索框(searchview)
- UI组件:搜索框(SearchView)
- SearchView搜索框
- 搜索框(SearchView)详解
- SearchView搜索框
- SearchView--搜索框案例
- 自定义搜索框searchview
- 灵活运用__doPostBack函数(比如用于动态生成控件)
- Android搜索控件SearchView的用法
- 自定义 Android 搜索控件 SearchView ---SimpleSearchView
- PLC编程再思考之三:面向过程
- Java 枚举enum 使用详解
- HDU 3555 Bomb(数位dp 深搜版)
- 微信开发者模式之网址接入TOKEN验证
- 40 leetcode - Search a 2D Matrix
- 灵活运用SearchView搜索框控件(二)
- 给自己一点正能量
- [BZOJ3388][Usaco2004 Dec]Cow Ski Area雪场缆车
- [乐意黎转载]git 常用命令
- linux查看端口被哪个进程占用
- 程序运行时的内存空间分布
- 获取当前连接的wifi的名字
- 51nod--基础题大数加法
- 为什么我们希望使用Markdown